Cómo crear secciones de una web con vistas avanzadas y taxonomía de Drupal

En Drupal, para crear páginas con una parte de contenido estático específico para cada página y otra dinámica se puede utilizar una vista de página con la parte estática en la cabecera y la dinámica en la sección 'fields'. De esta manera la sección se puede componer de una parte 'fija' y otra dinámica para, por ejemplo, mostrar productos de una categoría en una tienda online.

Después hay que definir relaciones para sacar campos relacionados de un producto, y un filtro de contexto basado en la URL para la sección.

Cómo crear las secciones con páginas y vistas

Para hacerlo, he probado dos opciones, aunque la primera la descarté en seguida, la dejo para acordarme de porqué no la he utilizado:

  • Vista de página vacía con URL de sección y bloque de vista con filtro contextual insertado en el encabezado. Problemas encontrados:
    • No filtra, el resultado es una tabla con todos los resultados (viene del bloque)
    • Si le añado filtro contextual (para que lo herede la vista de bloque) no saca nada
    • No tiene mucho sentido, es mejor hacer la vista de página con el contenido que quiero mostrar (los productos) filtrado por un filtro normal fijo y la URL fija, los bloques dan problemas al tener que coger el filtro contextual de la URL.
  • Página fija para cada sección con bloque debajo del contenido (vista de tipo bloque con filtro de contexto basado en URL)
    • El bloque con filtro de contexto, y en la vista de bloques se ha de activar para todas las URL's de páginas en las que se utilice, en la configuración del bloque.
    • Fácil de manejar, en la página el contenido fijo, y una sola vista de bloque muestra todo el contenido dinámico dependiente de la sección (los productos de la categoría si es una tienda online)
    • El único inconveniente que tiene es que el contenido dinámico siempre estara donde esté ubicado el bloque, normalmente después del contenido de la página.

Hay que tener en cuenta que al crear usar la taxonomía para agrupar los artículos o nodos por secciones o categorías, hay que controlar también cómo se muestran las páginas de etiquetas cada vez que se hace click en un enlace de esta taxonomía. Por defecto saldrá el 'teaser' de cada nodo o producto clasificado con ese tag. Si se quiere aprovechar el bloque anterior se puede deshabilitar en los filtors de la vista de taxonomía este tipo de contenido, y configurar el bloque para que también se muestre en las URL's de esta taxonomía.

Previamente, con pathauto, hay que configurar las URL's de etiquetas para este tipo de contenido (productos, por ejemplo), para que tengan una URL específica.

 

Algunos apuntes para recordar

Filtro de contexto en vistas de página y de bloque

En vistas de tipo página el filtro de contexto toma el parámetro de la URL de la página (alias o URL interna), que puede ser fija o parametrizada si en la vista la URL incluye un '%'. Entonces, lo que define cómo selecciona el filtro es lo que se indica en la sección WHEN THE FILTER VALUE IS IN THE URL OR A DEFAULT IS PROVIDED

En vistas de tipo bloque, como en la vista no existe ninguna URL especificada, no hay parámetro de entrada para el filtro y entonces se tiene que especificar en la sección WHEN THE FILTER VALUE IS NOT IN THE URL marcando la opción 'Provide default value' y después elegir la mejor manera de especificar el parámetro que tiene que utilizar el filtro, que suele ser 'Raw value from URL' para obtenerlo de la URL de la página activa en el momento que se visualiza el bloque. También hay que marcar 'Use path alias' si el valor de la URL es un nombre.

 

Para que funcione el filtro por taxonomía

Seleccionar el filtro contextual de Contenido: Has taxonomy term ID

Seleccionar 'Specify validation criteria' . En 'Validator', 'Término de taxonomia', marcar el vocabulario correspondiente y en 'Filter value type' seleccionar la opción 'Term name converted to Term ID' si la URL que se usa de parámetro va a contener el nombre del término y no el ID. Marcar también 'Transform dashes in URL to spaces in term filter values' para que funcione bien el filtro para etiquetas de más de una palabra.

Opciones de filtro de contexto para filtrar por taxonomía

 

Nota sobre vistas: Las páginas tienen preferencia sobre las vistas en sobreescritura de URL's

 

Otro inconveniente de esta solución con una vista de bloque es que no se pueden exponer los filtros o las ordenaciones del contenido que muestra el bloque al no ser el bloque parte del contenido de la página, aunque se habilite la exposición en las opciones ésta no tiene ningún efecto.

Si se quiere permitir al usuario seleccionar criterios de filtro u ordenación habría que explorar opciones con vistas de página, o páginas estáticas con el bloque insertado como contenido.