Modificar vistas usando una función de previa

Views es un módulo excepcional con el que podemos conseguir muchísimas cosas simplemente usando la interfaz de construcción. Sin embargo, cuando aún así no conseguimos el resultado final deseado podemos utilizar una función para modificar la salida mediante código.

Esta es hook_views_pre_render y se ejecuta antes del renderizado de los arrays que la vista construye, así que podemos cambiar esos arrays en base a nuestras necesidades.

Ejemplo práctico

Pongámonos en el caso de que tengo una vista cuyo display es un bloque se se muestra en la barra lateral. Ese bloque lo vemos en todo el sitio Web, da igual si estamos visualizando un contenido de tipo página o de tipo artículo. Lo que queremos es si es de tipo página nos muestre un título en el bloque de la vista, y si es de tipo artículo otro.

Como vemos en el hook, lo que hemos hecho es conocer si la vista que visualizamos en la carga es la que queremos modificar, ya que para todas las demás vistas del sitio no queremos que cambie nada. Si es la deseada llamamos a una función personalizada donde sí vamos a tocar la vista:

Ahora vamos a comprobar primero que lo que estamos viendo es una entidad de tipo nodo. Si no fuera así mostraríamos el título que hemos definido en la interfaz de la vista. Si es nodo lo cargamos en un objeto y observamos de que tipo es, cambiando el título para cada caso.

En este ejemplo sólo hemos modificado el título de la vista, pero podríamos cambiar cualquier cosa, como por ejemplo

  1. Podemos añadir contenido antes y después de la vista con $view->attachment_before y $view->attachment_after respectivamente.
  2. Podemos modificar el contenido de los campos visualizados modificando $view->result.

Experto en la Gestión de Proyectos Web basados en Drupal con más de 8 años de experiencia. Desarrollo Full Stack (Front-end, Back-end, Site-Builder).

No Replies to "Modificar vistas usando una función de previa"