Presentando los Filtros Híbridos Expuestos

Es muy probable que para septiembre de 2012, semanas antes, semanas después, veamos una nueva versión de Views para Drupal 7. Con ella, se incluye una nueva funcionalidad que va a llevar la flexibilidad de los filtros expuestos de Views a otro nivel.

El nombre de esta nueva característica es filtros híbridos expuestos, pero es solo un nombre para identificar al hilo en drupal.org donde se desarrolló todo el trabajo. Porque en verdad, no vamos a encontrar ninguna ocurrencia de la palabra 'Híbrido' en la interfaz gráfica, sino algo así como Filtros Agrupados.

En las líneas que siguen daremos un paseo por las nuevas posibilidades que esta nueva versión plantea para sacarle el máximo provecho lo que será Views 7.x-3.4.

El problema:

Supongamos que estamos construyendo un sitio para venta de automóviles usados por internet. Los compradores de autos usados generalmente tienen en cuenta al momento de la compra, la cantidad de kilómetros, el costo, la marca y el modelo o año de fabricación.

Si quisieramos hacer un listado de todos los autos en venta, sería interesante una serie de Filtros que le permitan al usuario encontrar rápidamente el tipo de auto que está buscando. Por ejemplo, listar todos los autos modelo 2008 o más nuevos, que tengan menos de 100.000Km.

Con Views, esto es muy fácil de diseñar, simplemente hacemos que los filtros para los campos: Kilometraje, y Modelo sean expuestos, y así como también el operador. Con lo que obtendríamos algo como lo que vemos a continuación.

Filtros básicos expuestos

Pero tal vez, el dueño del sitio quiera simplificarle las cosas al usuario. Y en vez de dos campos por cada filtro (el operador y el valor) puede pedirnos que mostremos un solo campo por filtro, como ilustra la siguiente figura:

Filtros expuestos más complejos

Esto, claramente es más complicado de realizar con Views, y a menos que programemos cierto código específico, no hay formas de hacer esto utilizando la interfaz de administración, al menos, hasta agosto de 2012...

La solución:

Los filtros híbridos expuestos introducidos en un parche que fue incorporado a Views el 8 de Agosto de 2012 permiten generar filtros expuestos como los que figuran en la imagen anterior.

Un filtro híbrido expuesto es básicamente un conjunto de tres componentes. Un valor, un operador y un título que identifica al conjunto de valor y operador.

Por ejemplo, un filtro híbrido podría ser el siguiente:

Título              |   Operador         | Valor
---------------------------------------------------
Posterior a 2008    |  >                 | 2008
Posterior a 2010    |  >                 | 2010
Posterior a 2011    |  >                 | 2011
Posterior a 2012    |  >                 | 2011

Cuando un usuario selecciona 'Posterior a 2008', lo que views hace internamente es aplicar el operador > (mayor a) y el valor 2008.

Si bien Views 7.x-3.4 aún no ha sido liberada, esto ya se puede probar utilizando la versión 7.x-3.x del 9 de Agosto o más reciente. Veamos como se configura.

Primero, creamos nuestra vista de la forma tradicional. En la siguiente imagen, vemos que tenemos una vista con 3 campos, la imagen del vehículo, la descripción y un enlace para ver más. Luego, dos filtros expuestos que permiten limitar los resultados de la vista según modelo y kilometraje.

Estructura de la vista

Veamos como se configura ahora el filtro híbrido expuesto:

Primero, es necesario que el filtro sea Expuesto, luego, seleccionamos la opción Grouped Filters.

Paso 1 para crear filtros híbridos expuestos

En la nueva interfaz, podemos definir cada uno de los grupos que conforman en filtro híbrido.
Además, podemos configurar el tipo de Widget y si queremos que sea posible seleccionar más de un valor a la vez.

Paso 2 para crear filtros híbridos expuestos

Guardamos los cambios, y ya tenemos listo nuestro listado con filtros híbridos expuestos.

Filtros expuestos más complejos

Entendiendo la opción de valores múltiples

Tal vez una de las opciones más interesantes que provee esta nueva versión, sea la posibilidad de aplicar varias veces el mismo filtro utilizando diferentes valores.

Por ejemplo, podríamos crear un filtro con las siguientes características

Título              |  Operador          | Valor
---------------------------------------------------
Entre 2000 y 2005   |  between*          | 2000 y 2005
Entre 2005 y 2008   |  between           | 2005 y 2008
Entre 2008 y 2011   |  between           | 2008 y 2011

* Nota: between significa: "Entre"

Y marcar la opción, 'Allow Multiple selections'.

Con lo que el usuario final vería:

Filtro híbrido expuesto con seleccion múltiple

Pero es importante notar, que al marcar varias opciones del filtro, Views aplicará el operador AND a cada opción, con lo que no obtendremos ningun resultado si marcamos más de dos opciones a la vez. Claramente, ningún auto puede tener una fecha de fabricación que se encuentre al mismo tiempo entre (2000 y 2005) y a la vez entre (2008 y 2011).

Para solucionar esto, simplemente hay que crear un nuevo grupo de filtros y asignarle el operador OR. Luego, arrastrar nuestro filtro expuesto a ese grupo y guardar los cambios de la vista:

Colocar el filtro en un grupo único bajo el operador OR

Ahora, cada una de las opciones del filtro será tratada con un operador OR y obtendremos el criterio de filtrado que el usuario espera.

Comentarios finales

En el ejemplo de este artículo se utilizaron valores numéricos, pero los filtros híbridos están disponibles para todos aquellos filtros que tengan soporte para operadores. Por lo tanto podríamos hacer cosas como esta:

Uso de Filtros Híbridos con campos de opciones predefinidas

Si bien al momento de escribir estas líneas, no hay una versión estable de Views para instalar y probar esto, esta funcionalidad ya está disponible en la versión de desarrollo 7.x-3.x y lo estará de forma estable desde la versión 7.x-3.4 de Views. La versión de desarrollo es la que se indica en Rojo en la siguiente imagen.

Versión de desarrollo de views

Lamentablemente esta funcionalidad no está implementada en la versión para Drupal 6 de views. Primero se agregará esta funcionalidad a Views 8.x-3.x y luego se intentará incluirla en la versión de Drupal 6. Se necesitan voluntarios para esta tarea.

Por último, es muy importante obtener la mayor cantidad de pruebas antes de que Views 7.x-3.4 sea liberado al público. El desarrollo de esta nueva funcionalidad comenzó en el año 2009, y llevó más de 2 años de trabajo y decenas de revisiones por parte de los desarrolladores de Views. Sin embargo, ninguna pieza de software está exenta de fallos y queremos minimizar los riesgos lo más posible. Por esto, si usted quiere probar esto, descargue la versión de desarrollo de Views e instalela en su sitio. Si encuentra algún error relacionado con esta nueva funcionalidad, cree un nuevo Ticket en el issue queue del proyecto de Views.

Espero que disfruten esta nueva funcionalidad de Views, y muchas gracias a todos los que revisaron el código y dieron su opinión sobre el tema.

Te invito a leer también...

Compartir este material en...

Comentarios

Genial trabajo con este parche Mariano, muchísimas gracias por el esfuerzo :)

En primer lugar gracias. Muy buen artículo.

Según veo en la actual versión release, que ya incorpora esta funcionalidad, sólo está disponible para filtros. ¿Sabes si se está trabajando para incorporarla tambien a los criterios de ordenación?

Un saludo y muchas gracias.

Hace relativamente poco que hemos empezado a utilizar Drupal (empezamos con Drupal 7 de hecho). Nos lanzamos a usar Drupal porque no encontramos ningún otro CMS capaz de interrelacionar distintos tipos de contenido, lo que necesitábamos para crear Biolaboratorio. Gracias a sitios como este hemos podido avanzar poco a poco.

Un problema con el que nos hemos encontrado y sobre el que no se habla muy a menudo es el tema del hosting. Parece que pocas empresas ofrecen realmente alojamientos con capacidad suficiente para manejar Drupal. Sugerimos un tema :-) para un próximo artículo: qué pedir a una empresa de hosting para que Drupal funcione bien y qué hacer para optimizar la velocidad de Drupal.

Un saludo con afecto,
Blau

Modulo muy completo. Con esta modificacion fantastico.
posicionamiento web

Tengo un comentario como creo los filtros pero dentro de un bloque y no dentro de una pagina, lo necesito hacer de esa forma para agregarlo en el home page de mi web, es por ese sentido que solo necesito el bloque que crea el view

Gracias