Views Dependent Filters

Permite controlar la presencia de filtros expuestos en una pantalla de Views según los valores de otro filtro expuesto. Los filtros dependientes se ocultan cuando no son relevantes.

views_dependent_filters
1,997 sites
40
drupal.org

Install

Drupal 11, 10, 9, 8 v8.x-1.4
composer require 'drupal/views_dependent_filters:8.x-1.4'

Overview

Views Dependent Filters proporciona un mecanismo para crear visibilidad condicional de filtros expuestos en Views. Cuando tienes una vista con múltiples filtros expuestos, este módulo te permite mostrar u ocultar ciertos filtros según los valores seleccionados en otros filtros.

El módulo funciona añadiendo un manejador especial 'Dependent filter' a tu vista que actúa como puente entre un filtro controlador y uno o más filtros dependientes. Cuando los usuarios seleccionan valores específicos en el filtro controlador, los filtros dependientes se vuelven visibles. Cuando los valores del filtro controlador se cambian o se borran, los filtros dependientes se ocultan automáticamente, creando una interfaz de usuario más limpia e intuitiva.

El módulo utiliza el sistema #states de Form API de Drupal para manejar el cambio de visibilidad en el lado del cliente, proporcionando retroalimentación instantánea sin recargas de página. Soporta varios tipos de elementos de formulario incluyendo campos de texto, casillas de verificación, botones de radio y listas de selección (tanto simples como múltiples).

Features

  • Controla la visibilidad de filtros expuestos según los valores seleccionados en otros filtros expuestos
  • Soporta múltiples modos de condición: activar con valores específicos o cuando el filtro no está vacío
  • Compatible con el formulario expuesto básico de Views y el módulo Better Exposed Filters
  • Soporta varios tipos de widget: campo de texto, casillas de verificación, botones de radio y elementos de selección (simples y múltiples)
  • Opción de negar la condición para invertir la lógica de visibilidad (ocultar en lugar de mostrar cuando se cumple la condición)
  • Se pueden añadir múltiples instancias para crear cadenas complejas de dependencia entre filtros
  • Se integra con el módulo Facets para dependencias de búsqueda facetada
  • Cambio de visibilidad en el lado del cliente usando #states de Form API de Drupal para respuesta instantánea

Use Cases

Catálogo de productos con filtros específicos por tipo

Una vista muestra múltiples tipos de productos (por ejemplo, pasteles, bicicletas, libros). Un filtro expuesto permite a los usuarios seleccionar el tipo de producto. Usando este módulo, puedes añadir filtros específicos por tipo que solo aparecen cuando son relevantes: el filtro de sabor de pastel aparece solo cuando se selecciona 'pastel', el filtro de talla de bicicleta aparece solo cuando se selecciona 'bicicleta', y el filtro de género de libro aparece solo cuando se selecciona 'libros'.

Campos condicionales por tipo de contenido

Una vista muestra nodos de múltiples tipos de contenido. Cuando el usuario selecciona un tipo de contenido específico en el filtro de tipo, los filtros adicionales para campos que solo existen en ese tipo de contenido se vuelven visibles, evitando la confusión de opciones de filtro irrelevantes.

Filtrado jerárquico de ubicación

Una vista tiene filtros de país y ciudad. El filtro de ciudad puede hacerse dependiente del filtro de país, de modo que las ciudades solo aparezcan después de seleccionar un país, mejorando la experiencia del usuario al reducir el número de opciones inicialmente visibles.

Mejora de búsqueda facetada

Cuando se usa el módulo Facets con Views, este módulo puede crear dependencias entre filtros de facetas, mostrando facetas secundarias solo cuando las facetas primarias tienen selecciones, creando una experiencia de filtrado guiada.

Simplificación de formularios

Una vista compleja con muchos filtros expuestos puede simplificarse ocultando los filtros avanzados hasta que los usuarios indiquen que los necesitan seleccionando ciertos valores en los filtros básicos, reduciendo la carga cognitiva inicial.

Tips

  • Posiciona el manejador Dependent filter cuidadosamente en el orden de filtros - solo puede usar filtros antes de él como controladores y filtros después de él como dependientes
  • Puedes añadir múltiples manejadores Dependent filter para crear relaciones de dependencia complejas entre múltiples grupos de filtros
  • Los filtros expuestos requeridos no pueden establecerse como filtros dependientes ya que deben estar siempre visibles
  • Cuando se seleccionan ambos valores que muestran un filtro dependiente (por ejemplo, 'pastel' Y 'bicicleta'), los filtros dependientes para ambos se mostrarán, pero la lógica de consulta de Views significa que tendrían que existir resultados que coincidan con AMBOS criterios
  • La opción de negar invierte el comportamiento - úsala cuando quieras que los filtros se oculten en lugar de mostrarse cuando se cumplen las condiciones
  • Para la integración con Facets, necesitarás introducir manualmente los valores raw de las facetas (como aparecen en las URLs) en lugar de seleccionar de una lista

Technical Details

Hooks 1
hook_views_data_alter

Registra el plugin de filtro 'views_dependent_filter' con Views añadiéndolo a los datos de la tabla global 'views'

Troubleshooting 4
Los filtros dependientes no se muestran/ocultan

Verifica que JavaScript esté habilitado y que no haya errores de JS en la consola del navegador. Comprueba que el orden de los filtros sea correcto: el filtro controlador debe estar antes del manejador Dependent filter, y los filtros dependientes deben estar después de él.

Advertencia de tipo de widget no soportado

El módulo soporta widgets de campo de texto, casillas de verificación, botones de radio y selección. Si ves una advertencia sobre un tipo de widget no soportado, considera cambiar el widget del filtro expuesto a un tipo soportado en los ajustes del filtro de Views o en la configuración de Better Exposed Filters.

Selección múltiple con condición OR no funciona como se esperaba

Hay un problema conocido en Drupal core (#1149078) donde #states de Form API usa lógica XOR en lugar de OR para elementos de selección múltiple. Esto puede causar comportamiento inesperado con filtros dependientes controlados por elementos de selección múltiple.

El filtro no muestra resultados cuando múltiples filtros dependientes tienen valores

Este es el comportamiento esperado de Views. Cuando se filtra por múltiples criterios (por ejemplo, sabor de pastel Y talla de bicicleta), los resultados deben coincidir con TODOS los criterios. A menos que tu contenido tenga ambos atributos, no se devolverán resultados.