Zend_Tag_Cloud es la parte de renderizado de
Zend_Tag. Por defecto viene con un conjunto de decoradores
HTML, que te permiten crear nubes de etiquetas para un sitio web, pero
también te proporciona dos clases abstractas para crear tus propios
decoradores, para crear nubes de etiquetas en documentos PDF por ejemplo.
Puedes instanciar y configurar Zend_Tag_Cloud ya sea
programáticamente o completamente mediante un array o una instancia de
Zend_Config. Las opciones disponibles son:
cloudDecorator: define el decorador para la nube. Puede ser el nombre de la clase que debe ser cargada por el cargador de plugins, una instancia de
Zend_Tag_Cloud_Decorator_Cloudo un array que contenga la cadena 'decorator' y opcionalmente un array 'options', que se pasará al constructor del decorador.tagDecorator: define el decorador para las etiquetas individuales. Puede ser el nombre de la clase que debe ser cargada por el cargador de plugins, una instancia de
Zend_Tag_Cloud_Decorator_Tago un array que contenga la cadena 'decorator' y opcionalmente un array 'options', que se pasará al constructor del decorador.pluginLoader: un cargador de plugins diferente para usar. Debe ser una instancia de
Zend_Loader_PluginLoader_Interface.prefixPath: rutas de prefijo para añadir al cargador de plugins. Debe ser un array que contenga las claves prefix y path o múltiples arrays que contengan las claves prefix y path. Los elementos no válidos serán omitidos.
itemList: una lista de elementos diferente para usar. Debe ser una instancia de
Zend_Tag_ItemList.tags: una lista de etiquetas para asignar a la nube. Cada etiqueta debe implementar
Zend_Tag_Taggableo ser un array que se pueda usar para instanciarZend_Tag_Item.
Ejemplo 67.2. Uso de Zend_Tag_Cloud
Este ejemplo ilustra un caso básico de cómo crear una nube de etiquetas, añadirle múltiples etiquetas y finalmente renderizarla.
// 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;
Esto mostrará la nube de etiquetas con las tres etiquetas, distribuidas con los tamaños de fuente por defecto.
Zend_Tag_Cloud requiere dos tipos de decoradores para poder
renderizar una nube de etiquetas. Esto incluye un decorador que renderiza
las etiquetas individuales, así como un decorador que renderiza la nube
que las envuelve. Zend_Tag_Cloud incluye un conjunto de decoradores por defecto
para formatear una nube de etiquetas en HTML. Este conjunto creará por defecto una
nube de etiquetas como una lista ul/li, distribuida con diferentes tamaños de fuente según
los valores de peso de las etiquetas asignadas a ellas.
El decorador de etiqueta HTML renderizará por defecto cada etiqueta en un elemento anchor, rodeado por un elemento li. El anchor en sí es fijo y no se puede cambiar, pero el elemento o elementos que lo rodean sí.
![]() |
Parámetro URL |
|---|---|
Dado que el decorador de etiqueta HTML siempre rodea el título de la etiqueta con un anchor, debes definir un parámetro URL para cada etiqueta usada en él. |
El decorador de etiqueta puede distribuir diferentes tamaños de fuente sobre los anchors o una lista definida de nombres de clase. Al establecer opciones para una de esas posibilidades, la correspondiente se habilitará automáticamente. Las siguientes opciones de configuración están disponibles:
fontSizeUnit: define la unidad de tamaño de fuente usada para todos los tamaños de fuente. Los valores posibles son: em, ex, px, in, cm, mm, pt, pc y %.
minFontSize: el tamaño de fuente mínimo distribuido entre las etiquetas (debe ser un entero).
maxFontSize: el tamaño de fuente máximo distribuido entre las etiquetas (debe ser un entero).
classList: un array de clases distribuidas entre las etiquetas.
htmlTags: un array de etiquetas HTML que rodean el anchor. Cada elemento puede ser una cadena, que se usa entonces como tipo de elemento, o un array que contenga una lista de atributos para el elemento, definida como par clave/valor. En este caso, la clave del array se usa como tipo de elemento.
El decorador de nube HTML rodeará las etiquetas HTML con un elemento ul por defecto y no añadirá separación. Al igual que en el decorador de etiqueta, puedes definir múltiples etiquetas HTML que las rodeen y además definir un separador. Las opciones disponibles son:
separator: define el separador que se coloca entre todas las etiquetas.
htmlTags: un array de etiquetas HTML que rodean todas las etiquetas. Cada elemento puede ser una cadena, que se usa entonces como tipo de elemento, o un array que contenga una lista de atributos para el elemento, definida como par clave/valor. En este caso, la clave del array se usa como tipo de elemento.
![[Note]](images/note.png)