Facets

Proporciona interfaces de búsqueda facetada para Drupal, permitiendo a los constructores de sitios crear y gestionar fácilmente navegación facetada para visualizaciones basadas en Search API y búsqueda del núcleo.

facets
52,116 sites
152
drupal.org

Install

Drupal 11, 10 v3.0.2
composer require 'drupal/facets:^3.0'

Overview

El módulo Facets permite a los constructores de sitios crear y gestionar sofisticadas interfaces de búsqueda facetada sin escribir código. Las facetas son filtros que permiten a los usuarios refinar los resultados de búsqueda seleccionando criterios específicos como categorías, fechas, rangos de precios o cualquier campo indexado.

El módulo proporciona un sistema de plugins integral con múltiples tipos de widgets (enlaces, casillas de verificación, desplegables), numerosos procesadores para transformar y filtrar resultados de facetas, y manejo flexible de URLs. Se integra perfectamente con Search API y Views, soportando tanto la colocación basada en bloques como el enfoque más reciente de filtros expuestos introducido en Facets 3.

Las capacidades clave incluyen soporte de facetas jerárquicas para taxonomías, soporte multilingüe con traducción automática de etiquetas de entidades, condiciones de facetas dependientes, comportamientos personalizables para estados vacíos, y caché extensiva con manejo apropiado del contexto de caché. El módulo también soporta exportaciones REST a través de su submódulo facets_rest.

Features

  • Crear facetas desde cualquier campo indexado en Search API incluyendo taxonomías, referencias a entidades, fechas, números y campos de texto
  • Múltiples tipos de widgets: Lista de enlaces, Casillas de verificación, Selector desplegable y Array (para REST)
  • Sistema extensivo de procesadores con más de 25 procesadores integrados para ordenar, filtrar y transformar resultados de facetas
  • Soporte de taxonomía jerárquica con estructuras de árbol expandibles y relaciones padre-hijo
  • Filtrado basado en URL con alias de URL configurables y manejo de cadenas de consulta
  • Condiciones de facetas dependientes: mostrar/ocultar facetas basándose en otras selecciones de facetas
  • Opciones de comportamiento vacío: ocultar faceta, mostrar faceta vacía o mostrar texto personalizado
  • Soporte multilingüe con traducción automática de etiquetas de entidades
  • Integración de migas de pan mostrando las selecciones de facetas activas
  • Submódulo Facets Summary para mostrar los filtros de búsqueda actuales
  • Widgets de control deslizante de rango a través del submódulo facets_range_widget
  • Widgets de filtro con caja de búsqueda a través del submódulo facets_searchbox_widget
  • Soporte de REST API a través del submódulo facets_rest para aplicaciones headless
  • Integración con filtros expuestos de Views a través del submódulo facets_exposed_filters
  • Función de límite suave para mostrar/ocultar elementos adicionales de facetas con JavaScript
  • Soporte de contexto de caché para el cacheo apropiado de páginas filtradas por facetas
  • Sistema de eventos para personalizar URLs de facetas, cadenas de consulta y metadatos de caché

Use Cases

Filtrado de productos en comercio electrónico

Crea facetas para atributos de productos como categoría, marca, rango de precios, color y talla. Usa el submódulo Range Widget para controles deslizantes de precios. Habilita la jerarquía para categorías anidadas. Configura los operadores AND/OR según si los filtros deben ser exclusivos o aditivos.

Archivo de contenido con filtros de taxonomía

Construye un archivo de contenido filtrable usando facetas de términos de taxonomía. Habilita el procesador 'Transform entity ID to label' para mostrar nombres de términos. Usa la jerarquía para vocabularios anidados. Añade 'Hide non-narrowing results' para mostrar solo opciones de filtro relevantes.

Resultados de búsqueda con múltiples tipos de filtros

Combina facetas de texto (autor, etiquetas), facetas de fecha (fecha de publicación con granularidad) y facetas booleanas (destacado, publicado). Usa facetas dependientes para mostrar filtros relacionados solo cuando se seleccionan las facetas padre.

Search API headless/desacoplado

Usa el submódulo facets_rest con Array widget para devolver datos de facetas en respuestas de API REST. Construye interfaces de facetas personalizadas en el frontend mientras aprovechas la indexación de Search API de Drupal y el procesamiento de facetas.

Búsqueda facetada multilingüe

Habilita el procesador 'Transform entity ID to label' que carga automáticamente las etiquetas de entidades traducidas. El módulo respeta el contexto del idioma actual y proporciona contextos de caché apropiados para el almacenamiento en caché con reconocimiento de idioma.

Tips

  • Usa el nuevo enfoque de Facets Exposed Filters (submódulo facets_exposed_filters) para sitios nuevos - proporciona mejor integración con Views
  • Habilita el procesador 'Sort by active state' para mantener los elementos seleccionados en la parte superior de la lista
  • Usa alias de URL que sean cortos pero descriptivos - aparecen en las URLs cuando las facetas están activas
  • Configura límites suaves en widgets de enlaces/checkbox para mostrar un número manejable de elementos con expansión 'Mostrar más'
  • Prueba el comportamiento de las facetas con el caché del navegador deshabilitado durante el desarrollo
  • Usa la configuración facets_debug_cacheable_metadata para depurar problemas de caché en desarrollo

Technical Details

Admin Pages 5
Facets /admin/config/search/facets

Página principal de administración que lista todas las facetas configuradas agrupadas por sus fuentes de facetas. Permite crear, editar, clonar y eliminar facetas. Muestra el peso de la faceta para ordenar y proporciona acceso rápido a la configuración de la fuente de facetas.

Añadir faceta /admin/config/search/facets/add-facet

Formulario para crear una nueva faceta. Seleccione una fuente de faceta (visualización de Views), elija un campo para facetar y proporcione un nombre y nombre de máquina.

Editar faceta /admin/config/search/facets/{facets_facet}/edit

Formulario principal de configuración de faceta para editar widget, procesadores y ajustes de visualización.

Ajustes de faceta /admin/config/search/facets/{facets_facet}/settings

Formulario de ajustes básicos para editar fuente de faceta, nombre y selección de campo.

Editar configuración de fuente de faceta /admin/config/search/facets/facet-sources/{facets_facet_source}/edit

Configurar ajustes de fuente de faceta incluyendo procesador de URL y opciones de migas de pan.

Permissions 1
Administrar Facets

Crear y configurar Facets para tus páginas de búsqueda.

Hooks 1
hook_facets_search_api_query_type_mapping_alter

Altera el mapeo de Query Type de Facets para personalizar cómo se manejan los tipos de datos en Facets basados en Search API

Troubleshooting 6
Las facetas muestran IDs de entidad en lugar de etiquetas

Habilita el procesador 'Transform entity ID to label' en la faceta. Asegúrate de que el campo indexado sea una referencia de entidad (no solo el campo de ID de entidad).

Las facetas no aparecen en la página

Verifica que 'Hide facet when facet source is not rendered' esté desmarcado si muestras facetas en páginas sin la View de búsqueda. Verifica que el Block de faceta esté colocado en una región visible.

Los resultados de facetas incluyen contenido de otros idiomas

Añade un filtro de idioma a tu consulta de Views, o implementa hook_search_api_query_alter() para restringir los resultados al idioma actual.

Problemas de caché con la búsqueda facetada

Asegúrate de que la caché de tu Views esté configurada como 'Search API (none)' o un plugin de caché que respete las selecciones de facetas. El módulo facets añade automáticamente los contextos de caché apropiados.

El widget desplegable no funciona como un select normal

Habilita 'Ensure that only one result can be displayed' en la configuración de facetas para que el desplegable se comporte como selección única.

Las facetas jerárquicas no muestran la estructura de árbol

Habilita el procesador 'Index hierarchy' en el índice de Search API para campos de taxonomía. Habilita 'Use hierarchy' en la faceta y selecciona Taxonomy como tipo de jerarquía.

Security Notes 3
  • El permiso 'administer facets' otorga control total sobre la configuración de facetas - asígnalo con cuidado
  • Los alias de URL se sanitizan para prevenir XSS - solo se permiten caracteres alfanuméricos, puntos, guiones, guiones bajos y tildes
  • Los procesadores de facetas que muestran etiquetas de entidades respetan el acceso a entidades - las etiquetas de contenido no publicado no se exponen a usuarios no autorizados