Как использовать компонент тега Zend в Zend Framework?

Я хочу знать о компоненте Zend Tag.

Что это?
Как использовать это в моем проекте?

Предположим, у меня есть следующие три таблицы:
сообщения — идентификатор, имя
теги — идентификатор, имя
posts_tags — идентификатор, post_id, tag_id

Как я могу использовать этот компонент для создания облака тегов?
Какой вес?

Я проверил это:
http://framework.zend.com/manual/current/en/modules/zend.tag.introduction.html

http://framework.zend.com/manual/current/en/modules/zend.tag.cloud.html

0

Решение

Например, у вас есть два тега: Tag A происходит 1000 раз, Tag B происходит только один раз, и Tag C происходит 50 раз. Первой идеей может быть количество вхождений в размер шрифта. Теперь это не очень полезно, как у нас Tag A на размер шрифта 1000, а также Tag B на размер шрифта 1, Вместо этого вы, вероятно, хотите что-то вроде:

  • Наиболее часто встречающийся тег должен иметь размер шрифта 25
  • Тег, встречающийся меньше всего, должен иметь размер шрифта 10
  • Все остальные теги должны быть равномерно распределены между шагами размера шрифта 2

Вот где этот модуль вступает в действие. Основная проблема, которую пытается решить этот модуль — это отображение how often a tag occurs to how large you want it to be displayed in relation to other tags, Или быть введенным в функцию: calculateBoundedFontSize(count($tag)),

В Zend\Tag\ это обрабатывается весами (сколько тегов встречается) и значениями (значение размера шрифта по отношению к весу тега):

  • Сначала мы создаем список тегов с указанием каждого веса (например, количество вхождений).
  • Во-вторых, мы сообщаем модулю сопоставить массив разрешенных размеров шрифта с элементами в зависимости от количества вхождений.

Второе сделано этой строкой в ​​документации:

$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));

Который в основном говорит модулю дать тегу размер шрифта 10тот, который имеет наименьший размер шрифта 1, Все, что между ними, распределено по случайности. Чтобы вернуться к первоначальному примеру, Tag A получит размер шрифта 10, Tag B размер шрифта 1, а также Tag C размер шрифта 2,

Причина, по которой документация не говорит конкретно count а также font size для абстракции. Вместо того, чтобы брать число случаев, мы могли бы использовать какой-то другой фактор для определения важности предмета (например, важности). Мы также могли бы использовать более сложное вычисленное значение, например, мы могли бы сказать, Featured Tags важнее и добавить дополнительный 1000 к их весу в дополнение к графу. Для значений применяется то же самое, он не обязательно должен иметь размер шрифта, но вместо этого может использоваться для упорядочивания.
Только Zend\Tag\Cloud использует эти веса и значения как размеры шрифта. Но мы могли бы легко создать другой модуль, который использует их для рендеринга упорядоченного списка.

Для вашей ситуации достаточно простого примера:

// Create a ItemList
$list = new Zend\Tag\ItemList();

// Add all tags and their count to it
foreach ($allTags as $tag) {
$list[] = new Zend\Tag\Item(array('title' => $tag, 'weight' => countTagOccurences($tag));
}

// Assign font size values
$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));// Or to use the Zend\Tag\Cloud directly
$cloud = new Zend\Tag\Cloud(
array(
'tagDecorator' => array(
'decorator' => 'htmltag',
'options'   => array(
'minFontSize' => '1',
'maxFontSize' => '10',
),
),

'tags' => $list
)
);
3

Другие решения

Документация довольно ясна (хотя не все так очевидно); возможно, лучший вопрос «Что такое Zend_Tag_Cloud?»:

Zend_Tag_Cloud является частью рендеринга Zend_Tag. По умолчанию он поставляется с набором HTML-декораторов, которые позволяют создавать облака тегов для веб-сайта, а также предоставляют два абстрактных класса для создания собственных декораторов, например, для создания облаков тегов в документах PDF.

http://framework.zend.com/manual/1.12/en/zend.tag.cloud.html

https://en.wikipedia.org/wiki/Tag_cloud

НТН.

1

По вопросам рекламы [email protected]