Содержание


Cloud


облако, облако тегов, ЗФ2, Zend Framework 2, ZF2, ру, ru




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», применяются различные размеры шрифта в зависимости от значений веса тегов.

 

HTML декоратор тегов

 

По умолчанию отображает каждый тег, у которого есть якорь и заключён в элемент «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;

HTML декоратор облака

 

Окружает теги облака элементом «ul» по умолчанию без разделителей. Так же есть возможность задать список тегов – окружителей и разделитель. Доступные опции:

- separator – задает разделитель между тегами.

- htmlTags – массив, содержащий теги, которыми необходимо окружить теги облака.  Каждый элемент может быть  строкой (string), которая используется как тип элемента, или массив, содержащий список атрибутов для элемента, определенных как пары «ключ/значение».


.
Автор статьи: DuB