Zend\Tag\Cloud отвечает за рендеринг Zend\Tag. По умолчанию, поставляется с набором HTML декораторов, которые позволяют создавать облако тегов для сайта, а так же предоставляет два абстрактных класса, с помощью которых Вы сможете создавать свои декораторы, например для создания облака тегов в PDF документе.
Можно создать экземпляр и настроить Zend\Tag\Cloud программным путем или полностью через массив или экземпляр Zend\Config\Config. Доступные опции:
- cloudDecorator - определяет декоратор для облака. Может быть именем класса, который должен быть загружен через «pluginloader», экземпляр Zend\Tag\Cloud\Decorator\Cloud или массив, содержащий строку «decorator» и не обязательно массив «options», которые будут переданы в конструктор декоратора.
- tagDecorator - определяет декоратор для отдельных тегов. Может быть именем класса, который должен быть загружен через «pluginloader», экземпляр Zend\Tag\Cloud\Decorator\Cloud или массив, содержащий строку «decorator» и не обязательно массив «options», которые будут переданы в конструктор декоратора.
- pluginDecoratorManager – альтернативный (дополнительный) менеджер плагинов для использования. Должен быть экземпляром Zend\ServiceManager\AbstractPluginManager.
- itemList - альтернативный (дополнительный) список элементов для использования. Должен быть экземпляром Zend\Tag\ItemList.
- tags – список тегов, которые должны быть в облаке. Каждый тег должен реализовать Zend\Tag\TaggableInterface или массив, который можно использовать для создания экземпляра Zend\Tag\Item.
Использование Zend\Tag\Cloud
Пример иллюстрирует как создать облако тегов, добавить несколько тегов в него и как его отобразить.
// Create the cloud and assign static tags to it $cloud = new Zend\Tag\Cloud(array( 'tags' => array( array('title' => 'Code', 'weight' => 50, 'params' => array('url' => '/tag/code')), array('title' => 'Zend Framework', 'weight' => 1, 'params' => array('url' => '/tag/zend-framework')), array('title' => 'PHP', 'weight' => 5, 'params' => array('url' => '/tag/php')), ) )); // Render the cloud echo $cloud;
Будет выведено облако из трех тегов со шрифтами по умолчанию.
Как создать облако тегов используя объект Zend\Config\Config:
# An example tags.ini file tags.1.title = "Code" tags.1.weight = 50 tags.1.params.url = "/tag/code" tags.2.title = "Zend Framework" tags.2.weight = 1 tags.2.params.url = "/tag/zend-framework" tags.3.title = "PHP" tags.3.weight = 2 tags.3.params.url = "/tag/php"/span
// Create the cloud from a ZendConfigConfig object $config = Zend\Config\Factory::fromFile('tags.ini'); $cloud = new Zend\Tag\Cloud($config); // Render the cloud echo $cloud;
Для Zend\Tag\Cloud необходимо указывать два типа декораторов, что бы облако тегов могло быть нормально отрисовано. Один декоратор отвечает за отрисовку непосредственно каждого отдельного тега, а второй за отрисовку самого облака. Zend\Tag\Cloud устанавливает настройки по умолчанию для создания тегов в HTML формате. Используется список «ul/li», применяются различные размеры шрифта в зависимости от значений веса тегов.
По умолчанию отображает каждый тег, у которого есть якорь и заключён в элемент «li». Якорь фиксирован и изменяться не может, но окружающие элементы могут меняться.
Важно: Параметры URL.
Так как к каждому тегу прикрепляется якорь, то вы должны указать URL для
каждого тега.
Декоратор так же может применять различные размеры шрифтов или список имен классов CSS. Доступны следующие настройки:
- fontSizeUnit – определяет в каких единицах измеряется размер шрифта. Доступные значения: em, ex, px, in, cm, mm, pt, pc или %. По умолчанию «px».
- minFontSize – минимальный размер шрифта для тега. Целое значение. По умолчанию 10.
- maxFontSize – максимальный размер шрифта для тега. Целое значение. По умолчанию 20.
- classList – массив с именами классов, которые должны применяться к тегам.
- htmlTags - массив HTML тегов, которые должны окружать якорь. Каждый элемент может быть строкой (string), которая используется как тип элемента, или массив, содержащий список атрибутов для элемента, определенных как пары «ключ/значение». Тогда ключ массива используется как тип элемента.
Создание облака тегов с использованием HTML декоратора:
$cloud = new Zend\Tag\Cloud(array( 'tagDecorator' => array( 'decorator' => 'htmltag', 'options' => array( 'minFontSize' => '20', 'maxFontSize' => '50', 'htmlTags' => array( 'li' => array('class' => 'my_custom_class') ) ) ), 'tags' => array( array('title' => 'Code', 'weight' => 50, 'params' => array('url' => '/tag/code')), array('title' => 'Zend Framework', 'weight' => 1, 'params' => array('url' => '/tag/zend-framework')), array('title' => 'PHP', 'weight' => 5, 'params' => array('url' => '/tag/php')), ) )); // Render the cloud echo $cloud;
Окружает теги облака элементом «ul» по умолчанию без разделителей. Так же есть возможность задать список тегов – окружителей и разделитель. Доступные опции:
- separator – задает разделитель между тегами.
- htmlTags – массив, содержащий теги, которыми необходимо окружить теги облака. Каждый элемент может быть строкой (string), которая используется как тип элемента, или массив, содержащий список атрибутов для элемента, определенных как пары «ключ/значение».