Como crear un bloque de enlaces a taxonomía en Drupal 8

encrucijada de caminos

El módulo de vistas de Drupal permite la extracción de datos de la base de datos y su transformación para presentarlo al usuario, permite hacer muchas cosas muy simpáticas desde el propio interfaz de administración pero cuando entremos a programar ya veréis que permite hacer auténticas virguerías.

En este caso, la página va creciendo en número de artículos pero no en funcionalidad, así que vamos a crear un bloque en el que se pueda navegar por los distintos términos de taxonomía, vamos a comenzar como si no hubiese términos de taxonomía ni contenido, para ello vamos a crear un tipo de contenido, un término nuevo para taxonomía, vamos a asignarlo a dicho a dicho tipo de contenido y vamos a crear un bloque resumen con todos los términos incluidos y la cantidad de nodos por término. Pero vayamos por partes, vamos a comenzar creando el término.

Agregar un nuevo término de taxonomía:

Para agregar un nuevo término de taxonomía vamos a administración > estructura > taxonomía (admin/structure/taxonomy) y le damos a agregar vocabulario:

agregar elemento de taxonomía

Rellenamos los campos, en este caso, como se trata de un ejemplo (el bloque real ya está creado) vamos a decirle a Simple XML Sitemap que no indexe el tipo de vocabulario para evitar 404 en google cuando eliminemos todo al terminar el ejemplo:

Nuevo termino de vocabulario

Agregar un nuevo tipo de contenido:

Ahora que tenemos creado el tipo de vocabulario,vamos a crear el tipo de contenido, en este caso, como se trata de un ejemplo, vamos a quitarle las opciones de publicación, la pertenencia a menús y el indexado de simple xml sitemap, lo normal es que quieras que tu contenido aparezca en un menú, que se promocione a la página principal si se trata de una noticia, que se cree una nueva revisión y que se publique automáticamente:

Añadir nuevo tipo de contenido al sitio

Esto nos creará un campo con contenido básico, es interesante ver, que en Drupal, al contrario de otros gestores de contenido, existe total flexibilidad a la hora de crear los contenidos, puedes añadir tantos campos como desees y de todos los tipos del sistema, también es posible añadir más tipos de campos al sistema mediante la inclusión de nuevos módulos.

Por ahora, vamos a dejar el contenido básico, solo con el campo de body pero vamos a añadir un nuevo campo, un campo de término de taxonomía:

Desplegable con los tipos de campo

Seleccionamos el tipo de contenido, le damos un nombre y lo guardamos, después de guardarlo ya podemos configurar el campo, rellenamos los campos disponibles, con la descripción del término, lo hacemos obligatorio para que nuestro bloque muestre todo el contenido de este tipo y el modo de referencia lo dejamos por defecto.

Elegimos como elemento de vocabulario el que habíamos creado con anterioridad y ya tenemos todo listo:

opciones de configuración del campo

Ahora ya podemos crear contenido con sus términos de taxonomía, o simplemente términos de taxonomía, para este ejemplo voy a crear solo losn términos, pero si queréis ver los contenido podéis ver el resultado en el bloque junto a este artículo.

Para ello nos vamos a Administración > Contenido > Vistas (atajo admin/structure/views)  y añadimos una vista, rellenamos los campos y elegimos que el campo sobre el que queremos hacer la vista:

Pagina de creación de nueva vista

También nos da la opción de crar una página y un bloque, cuando lo seleccionemos se nos presentarán todas las opciones de la creación, yo, particularmente soy partidario de crear una vista para el bloque y otra vista para la página, esto siempre nos dará más flexibilidad que tener ambas cosas en la misma vista, pero para este ejemplo vamos a crear el bloque y la página dentro de la misma vista:

Crear nueva página en la vistaCrear nuevo bloque en una vista

Una vez creada la vista, en la edición de la misma podemos ver abajo una previsualización de la misma, si elegimos el bloque veremos que nos muestra una lista de términos, pero no un contador, para crear el contador le damos a "Avanzado" junto a las opciones de bloque, esto nos abrirá un nuevo conjunto de opciones, entre ellas tenemos "Relaciones" y un botón "Añadir", le damos y elegimos "Contenido con término" de esta manera, relacionamos cada término con el contenido que utiliza ese término, tenemos la opción de exigir esa relación, de tal manera que no saldrán los elementos que no tengan esa relación, para este caso es mejor no exigirla para poder listar términos sin contenido.

Ahora, también en las opciones avanzadas activamos la agregación:

Opciones avanzadas de la vista

Tras activarlo y guardar, ahora tendremos opciones de sindicación en los campos de la vista, añadimos el campo Content:UUID, en la opción de agregación elegimos Count Distinct y en el campo el ID de la entidad de esta manera podremos contar los distintos IDs de contenido que hay por cada término:

Opciones de agregación de la vista

Ya solo nos queda hacer que se vea bien, para hacerlo bien bien hay que definir un estilo para el bloque, pero como ya he dicho, la parte del estilo por ahora la aparcamos y vamos simplemente a ponerlo todo en una línea con el número entre paréntesis.

Para ello vamos a Formato en la edición de la vista, en Mostrar:Campos elegir opciones y marcar los dos campos como campo en linea. Con esto ya nos salen en la lista uno detrás de otro. Solo nos queda editar el campo "(nodo) COUNT(DISTINCT Content: UUID)" y en "Reescribir Resultados" Reescribir la salida con "({{ uuid }})

Con esto ya tenemos creado el bloque, solo nos queda jugar con las opciones de visualización y paginación como mejor nos venga. En otro artículo volveremos sobre la página que hemos creado con la vista y haremos una página de listado de taxonomía más bonita para usarla en el enlace "más..." del paginador del bloque.

 

Etiquetas