Módulo Views 3 para Drupal 7: Filtros, criterios de ordenación y bloques

Continuamos con la serie de artículos sobre el módulo Views para Drupal 7 que empezó con una introducción a Views y también a los tipos de presentación, formatos y campos, en esta ocasión nos vamos a centrar en finalizar los aspectos básicos del módulo: Filtros, criterios de ordenación y presentación de tipo bloque, para seguir incrementando la complejidad en artículos venideros.

Colando los datos en Views.

¡Gracias a Dinner Series por compartir sus fotos con licencia creative commons!

¿Qué son los filtros?

Los filtros en el módulo Views nos permiten restringir el contenido a visualizar por el usuario, podemos configurar tantos como queramos para hacer nuestra consulta lo más específica posible e incluso anidarlos con operadores AND u OR. La mayoría de módulos proveen los filtros necesarios para que nuestras vistas sean tan restrictivas como queramos, pero en caso de necesitar extender el sistema, también podremos hacerlo con el API de Views, sobre el que entraremos en detalle en el futuro.

Para añadir nuevos filtros a una vista, podemos utilizar el enlace "agregar" de la sección CRITERIOS DE FILTRADO de nuestra vista.

Se nos abrirá una ventana modal en la que podemos seleccionar uno o varios criterios para el filtro, el interfaz es idéntico al que hemos usado para añadir campos y será similar para todas las operaciones que impliquen agregar elementos a una vista, como por ejemplo los criterios de ordenación. En este interfaz podemos filtrar por nombre y/o categoría para encontrar mucho más rápidamente lo que estamos buscando.

Cuando seleccionemos uno o varios criterios y los agreguemos a nuestra vista, nos aparecerá una segunda pantalla de configuración en la que podremos seleccionar cómo queremos que se realice el filtrado de datos. Si hemos seleccionado más de un filtro para añadir, las pantallas se mostrarán una a continuación de otra.

En el ejemplo de arriba podemos seleccionar diversidad de opciones como el contenido del campo a filtrar, si está vacío o no, etc, todas estas opciones son contextuales dependiendo de si lo que estamos filtrando es un número, una cadena, una fecha, o en el caso de arriba un término de taxonomía.

¿Qué son los criterios de ordenación?

Los criterios de ordenación definen el órden por el que aparecerán los resultados de la vista cuando esta se ejecute y se muestre al usuario. Se añaden y gestionan de la misma manera que los campos o filtros y la vista se ordenará usando los criterios definidos en el órden en el que nosotros queramos.

Por ejemplo, para ordenar primero por fecha, luego por nombre, luego por país, añadiriamos 3 criterios de ordenación y los situariamos en el orden en el que queramos que se apliquen.

Presentaciones de tipo bloque: Cómo se crean y para qué se utilizan.

En el anterior artículo vimos como realizar una presentación de tipo página, un listado con una url, pero Views permite también realizar presentaciones de tipo bloque sin ninguna extensión adicional, los bloques se pueden situar en regiones de la plantilla desde la administración de bloques o usarlos como piezas en constructores de páginas más complejos como Context o Panels.

En el momento de la creación de una vista, podemos seleccionar si queremos crear una presentación para la misma de tipo página, de tipo bloque o ambas:

Pero también podemos añadir una o varias presentaciones de tipo bloque en una vista ya existente, simplemente editamos la vista y hacemos click en la opción +Add o Añadir justo debajo de Presentaciones, seleccionamos Agregar Bloque y a partir de ahí podremos modificar todos los aspectos que necesitemos de la misma forma en la que lo veniamos haciendo hasta el momento.

¡Mucho cuidado! hasta que no le damos al botón Guardar o Save de arriba a la derecha en la edición de las vistas, ninguno de nuestros campos se ha almacenado todavía, así que sed cuidadosos cuando editéis las vistas y recordad siempre grabar cuando hagáis cambios definitivos.

En futuros artículos comentaré cómo gestionar las presentaciones (Displays en inglés) para que sea mucho más sencillo trabajar con el módulo Views.

Vamos con el ejemplo

Si queréis seguir el ejemplo paso a paso podéis partir de esta feature, que podéis descomprimir en vuestro sitio en sites/all/modules e instalar. Necesitaréis también el módulo Features y recomiendo el módulo Feeds con el que podréis importar el contenido con el feeds importer que provee la misma feature.

Lista de lugares en un bloque filtrada por país.

Para este ejemplo vamos a crear una lista de lugares, que se muestre en un bloque y además esté filtrada para que solamente salgan lugares de los paises a nuestra elección.

El primer paso ya lo hemos visto varias veces, accedemos a nuestra instalación Drupal con un usuario administrador y vamos a Estructura » Vistas » Agregar nueva vista.

En esta pantalla, introducimos el nombre y desmarcamos la opción "Crear una página" (Create a page) y marcamos la opción "Crear un bloque" (Create a block). Le damos un título al bloque, elegimos el formato de presentación y decidimos si queremos el bloque paginado o no. Así lo he configurado yo:

Después hacemos click en Continuar y editar para personalizar la vista un poquito más.

Configuramos los campos a nuestro gusto, yo le he añadido la descripción del lugar, pero recortada a 100 caracteres, el título es una de las opciones predefinidas con las que se crea la vista automáticamente.

Después, bajo CRITERIOS DE FILTRADO, encontraréis que ya se ha añadido la opción de Publicado (Sí) automáticamente porque es una de las opciones más comunes, querer mostrar solamente contenido publicado. Le vamos a añadir el País como filtro para configurar que salgan lugares solamente de una serie de paises determinados.

Seleccionamos el campo Pais como filtro y hacemos click en Agregar y configurar criterio de filtrado.

Como es una taxonomía, nos permite elegir cómo vamos a registringir estos elementos, si usando un autocompletar o una lista de selección, si tenéis una taxonomía con muchísimos términos, es mejor autocompletado, pero si vuestra taxonomía no tiene demasiado contenido, podéis usar desplegable para ver todos los términos y elegir los que queréis filtrar.

Y finalmente llegáis a la pantalla donde se configura realmente el filtro, podéis seleccionar por inclusión, exclusión, todos, no nulos, etc, depende mucho de cada filtro, para el ejemplo vamos a elegir mostrar solamente los lugares de España, Argentina y México:

Le dais a Apply o Aplicar y ya lo podréis ver en vuestra vista, para cambiar las opciones de seleccion podeis darle a Opciones y para cambiar los criterios de filtrado, al título del filtro.

Una vez hecho esto, vamos a añadir un criterio de ordenación, por ejemplo el nombre del lugar descendente, para ello en CRITERIOS DE ORDENACIÓN, hacemos click en agregar y buscamos el campo de nombre de lugar, que en este caso es el título de los nodos (Contenido: Título) y lo configuramos descendente.

Por defecto se nos pondrá al final de los criterios de ordenación, es el comportamiento que tienen campos, filtros y todos los demás elementos de Views cuando se agregan, pero todos ellos se pueden reordenar a nuestro gusto, solamente hay que hacer click en la flechita al lado de agregar para que aparezca la opción reordenar.

Esta opción nos lleva a una pantalla en la que podemos redistribuir los criterios (en este caso, los de ordenación) con drag & drop.

Y haciendo click en Apply o Aplicar, ya podremos ver los criterios de ordenación distribuidos correctamente.

¡Y ya tenemos la vista que buscábamos!, solamente nos queda guardarla usando el botón Save o Guardar de arriba a la derecha.

A partir de ahora, si visitamos la página de administración de bloques de nuestra página, en Estructura » Bloques podremos ver nuestras vistas con presentaciones de tipo bloque para que las situemos en las regiones que nos convengan.

Podéis descargaros el ejemplo de este artículo junto al de los artículos anteriores en una feature a través de este enlace del repositorio en github en el que estoy publicando las actualizaciones.

Todo es mucho más fácil de entender con un video

Si os ha gustado el tutorial y habéis llegado hasta aquí, ya no os costará nada dejar un comentario aquí abajo diciendo qué os está pareciendo la serie de artículos y este en particular. ¡Muchas gracias!

categorías: 
drupal: 

Comentarios

Esperaba esto como agua de mayo, seguro que te lo has pasado de vicio entre DrupalCamp y demás lios que organizas... ¡¡¡Pero cuanto más tiempo dedicas a eso menos puedes atender tu blog!!!! XDDDD
Que conste que ni mucho menos esto es un reproche solo que realmente he estado a la espera... ¿Se nota? ;P

Felicidades Pedro por tan buen trabajo,estos tutos son muy buen aporte para los que estamos empezando, se agradece..!!

Saludos desde Peru, felicitaciones por el articulo, muy bueno. Tengo una duda con Views, en donde puedo pasarle estilos CSS a mis vistas, el modulo me da las opciones de nombrar cada una de las vistas como clases, pero no se donde escribrir el codigo CSS, estoy trabajando con el theme Zen. Gracias

Buen tutorial, espero tu próxima entrega.

Gracias.

Hola, muchas gracias por el tutorial me ha sido de gran utilidad para conocer las posibilidades de las vistas. No sé si es abusar el pedir una respuesta a la siguiente pregunta. ¿Sería posible realizar relaciones entre tablas utilizando el módulo views? Gracias por todo.

Muchas Gracias. Estos tutoriales no tienen precio.

Son unos tutoriales magníficos, estaba muy interesada en aprender a usar el módulo views y gracias a estos tutoriales lo estoy "medio" consiguiendo!!! Aunque aún quedan muchos pasos, espero seguir aprendiendo con tus explicaciones.
Un saludo desde málaga!!

Me encanta tus tutoriales, otro saludo desde Málaga.

Buen tutorial, me gustaría saber como hacer para que roten las vistas, osea que no aparezca la misma en primer lugar , que vayan rotando cada vez que se entra en la pagina, gracias

Hola, interesante, tal vez me puedas ayudar estoy intentando crear un filtro expuesto en un bloque pero solo me funciona como pagina, no se que me falta, en bloque simplemente no me muestra nada

interesante, lo vengo a ver despues de otros tutoriales pero esta muy bien explicado, ahora el tema de mi consulta, lo que yo necesito es un bloque, simil busqueda, pero con los criterios aqui mencionados, ya que puede armar pagina dcon los criterios expuestos, pero a continuacion me muestra los datos en el formato de la pagina, lo que necesitaria seria mostras en ese bloque, estoy usando panels para armar la pagina principal, solamente con los criterios expuestos y que al filtrar, me envie a una pagina de resultados si es posible esta pagian que tengo creada. seria como una segunda forma de buscar, un bloque en el homey una pagina de busqueda como la que muestra el tutorial. es posible creadr edicho bloque o estoy pifiando al concepto???, saludos.

Realmente genial estan todos los tutoriales, quisera que publicaran los links de los videos de ser posible.

Buen tutotial. Aprovechando la ocasión me gustaría hacerte una consulta: llevo un tiempo peleándome con Drupal,7 para aprender a utilizarlo y el caso es que he hecho un nuevo contenido que dispone de una imagen tipo portada. Ningún problema hasta aquí. Preparo una vista views para enseñar dichas imágenes y todo correcto (después de pelearme bastante eh!), sin embargo ahora viene la dificultad; me gustaria que cuando un usuario registrado se conecta, le enseñase en un apartado propio lo qu él ha subido y no consigo establecer ningún filtro que funcione con el user uid. De hecho, en filtros ni siquiera aparece. Y si uso el usuario autor pues mal va y si uso el usuario que envia o modifica tampoco me funciona. He intentado con filtro de contexto y nada, además del de relación. En fin, no sé si me he liado con la explicación o...
Si puede ayudarme te estaría agradecido.
saludos

Hola, como puedo cambiar el criterio de ordenacion por numeros. aparece así
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20 .
y yo lo requiero
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 etc..

Algun solución? Gracias

Muchas gracias. Estupendo trabajo

Hola Pedro. He de confesar que soy seguidor tuyo y he aprendido mucho con tus tutoriales, muchas gracias de verdad.

Tenía la misma duda que algunos de los usuarios de más arriba y no sé si lo han solucionado pero por si acaso respondo.

Al hacer la vista en bloque no muestra los filtros expuestos, pero sí que funciona en el tipo de vista página. Para que esto funcione tenemos que usar Ajax.
En avanzado > otros > usar Ajax: marcamos si y ya nos aparecerán en nuestro bloque los filtros expuestos.

Saludos.

DANI , sos un capo! Tenes toda la razón, para que funcione un filtro expuesto en un bloque hay que activar el uso de ajax!

gracias! Estuve mucho tiempo buscando esto! :D

Hola , muy buena la explicación y muy últil.
Tengo la siguiente inquietud, deseo crear una vista con view , slideshow.
Tengo problema como aplicar el filtro u la relacion segun corresponda.
Necesito que muestre el listado, solo el ultimo nodo de cada termino de una taxonomia
Asi del vocabularios

Vocabulario 1
term1
term2
term3

Mostrara tres nodos , el ultimo con term1 , el ultimo term2 el el ultimo con term 3

A la vista la configuro con mostrar solo tres item, en filtro pongo los nodos etiquetados con el vocabulario 1.
Pero ahora no logro ver como indicarle que muestre uno (el ultimo de cada term o categoria de la taxonomi)
Si puedes indicarme como encaminar me harías un gran favor.
Saludos

He iniciado en drupal hace muy poco tiempo y tengo un problema.

Estoy haciendo un sitio que tiene tres tipos de contenidos (A, B y C).
He creado una vista A, que muestro los datos que quiero del tipo A, colocando la ruta

OPCIONES DE PÁGINA
Ruta:/node/%

CRITERIOS DE FILTRADO
Contenido: Publicado (Sí)
Contenido: Tipo (= A)

FILTROS CONTEXTUALES
Contenido: Nid

De esta forma cuando veo el contenido de este tipo A funciona perfecto.

EL PROBLEMA ES QUE CUANDO HAGO LO MISMO PARA EL TIPO B (creando otra vista) TODO DEJA DE FUNCIONAR. Parece que no le gusta a drupal dos vistas page con la misma ruta. Como puedo resolverlo?
Les agradezco desde ya y espero poder colaborar con este grupo.

Gracias por el tutorial

Muy buen tutorial!
Tengo una duda:
¿hay algún criterio de ordenación que sirva para dejar el contenido fijo en el orden que está? Muestro en la home meidante una view tres entradas, que van a ser siempre las mismas. Para que aparezcan en el orden que yo quiero le he puesto "criterio de ordenación" por fecha de modificación. Pero ahora, quiero que aunque se modifiquen esas entradas, queden simpre en el mismo lugar. ¿Es posible?
Muchas gracias!!

Añadir nuevo comentario

 
 
 

Creative Commons License
Excepto donde se indique lo contrario, el contenido de este sitio está sujeto a una licencia de Creative Commons.