Facets Pretty Paths

Proporciona rutas de URL limpias y amigables para SEO para el módulo Facets, convirtiendo los parámetros de cadena de consulta en segmentos de ruta legibles.

facets_pretty_paths
6,836 sites
62
drupal.org

Install

Drupal 11, 10, 9 v2.0.4
composer require 'drupal/facets_pretty_paths:^2.0'

Overview

Facets Pretty Paths transforma las URLs de facetas predeterminadas generadas por el módulo Facets, de parámetros basados en cadenas de consulta (por ejemplo, /search?f[0]=color:blue) a segmentos de ruta limpios y legibles (por ejemplo, /search/color/blue). Este enfoque mejora tanto el rendimiento SEO como la experiencia del usuario al crear URLs más intuitivas y fáciles de compartir.

El módulo proporciona un sistema de "Coder" conectable que determina cómo se codifican los valores de las facetas en las URLs y cómo se decodifican de vuelta a sus valores originales. Esto permite diferentes estrategias de codificación dependiendo del tipo de datos que se están filtrando (términos de taxonomía, elementos de lista, referencias a nodos, etc.). Se proporcionan múltiples coders integrados, y se pueden crear coders personalizados implementando la interfaz del plugin Coder.

Cuando se habilita para una fuente de facetas, el módulo altera dinámicamente la ruta de la fuente para aceptar filtros de facetas como segmentos de ruta. También proporciona generación automática de migas de pan para las páginas de resultados de búsqueda filtradas.

Features

  • Plugin URL Processor que genera segmentos de ruta limpios en lugar de parámetros de cadena de consulta (por ejemplo, /brand/drupal/color/blue)
  • Sistema Coder conectable para codificar y decodificar valores de facetas en URLs - permite lógica de transformación personalizada por faceta
  • Coder Default integrado que usa valores sin procesar sin transformación (por ejemplo, /color/2)
  • Coder Taxonomy Term integrado que usa el nombre del término con ID para unicidad (por ejemplo, /color/blue-2)
  • Coder Taxonomy Term Name integrado que usa solo el nombre del término para URLs más limpias (por ejemplo, /color/blue)
  • Coder List Item integrado para campos de lista de opciones con etiqueta e ID (por ejemplo, /status/published-1)
  • Coder Node Title integrado para campos de referencia a entidad usando título del nodo con ID (por ejemplo, /author/john-smith-42)
  • Modificación automática de rutas para aceptar el parámetro facets_query en las rutas de fuentes de facetas
  • Servicio de filtros activos que analiza los segmentos de ruta de URL para determinar las selecciones de facetas actualmente activas
  • Constructor de migas de pan personalizado para páginas de búsqueda facetada con enlaces de navegación apropiados
  • Soporte para facetas jerárquicas con manejo de relaciones padre/hijo
  • Soporte AJAX para Views con preservación adecuada del contexto de URL
  • Soporte de procesamiento por lotes para Views Data Export con contexto de facetas

Use Cases

Filtrado de comercio electrónico optimizado para SEO

Una tienda en línea usa Facets Pretty Paths para crear URLs limpias e indexables para los filtros de productos. En lugar de /products?f[0]=category:shoes&f[1]=color:blue, los clientes ven /products/category/shoes/color/blue. Esto mejora la indexación en motores de búsqueda y permite a los usuarios marcar y compartir vistas filtradas específicas.

Filtrado de taxonomía multilingüe

Un sitio multilingüe usa el Coder Taxonomy Term Name para mostrar los valores de las facetas en el idioma del usuario. Al filtrar por la categoría 'Electronics' en inglés, la URL muestra /search/category/electronics, mientras que el mismo filtro en alemán muestra /search/kategorie/elektronik, mejorando el SEO local.

Filtrado por tipo de contenido

Un portal de noticias permite filtrar artículos por tipo usando un campo de lista. Con el Coder List Item, la URL /news/type/opinion-3 indica claramente el filtro mientras mantiene la referencia del valor interno para una decodificación confiable.

Filtrado de contenido basado en autor

Un blog usa campos de referencia a entidad para vincular contenido a perfiles de autor. El Coder Node Title crea URLs como /articles/author/jane-doe-15 que son tanto legibles por humanos como identificables de forma única.

Implementación de Coder personalizado

Un sitio con requisitos complejos de valores de facetas implementa un plugin coder personalizado. Al implementar CoderInterface con los métodos encode() y decode(), los desarrolladores pueden crear lógica de codificación de URL específica del sitio, como usar SKUs para variantes de productos o slugs personalizados para categorías.

Tips

  • Establece el 'alias de URL' de la faceta con un nombre corto y descriptivo ya que esto se convierte en parte de la ruta de URL (por ejemplo, 'brand' en lugar de 'field_product_brand')
  • Usa el Coder Taxonomy Term Name solo cuando los nombres de términos estén garantizados como únicos dentro del vocabulario para evitar decodificación ambigua
  • Considera la configuración de peso de las facetas ya que afecta el orden de los segmentos de ruta en las URLs - un ordenamiento consistente ayuda con el caché y SEO
  • Se pueden crear coders personalizados implementando CoderInterface - define encode() para generación de URL y decode() para análisis
  • El constructor de migas de pan tiene prioridad 1500, que puede ajustarse si ocurren conflictos con otros módulos de migas de pan
  • Al depurar, verifica el parámetro de ruta 'facets_query' para ver la cadena de filtro sin procesar que se está analizando

Technical Details

Admin Pages 2
Configuración de fuente de facetas /admin/config/search/facets/facet-sources/{facet_source_id}/edit

Configurar el manejador de URL para una fuente de facetas. Seleccionar 'Pretty paths' para habilitar rutas de URL limpias para todas las facetas que usan esta fuente en lugar de parámetros de cadena de consulta.

Configuración de faceta /admin/config/search/facets/{facets_facet}/edit

Cuando Pretty Paths está habilitado para la fuente de facetas, aparece una configuración adicional de 'Coder de Pretty paths' en la sección de configuración de Faceta, permitiéndote seleccionar cómo se codifican los valores de esta faceta específica en las URLs.

Hooks 1
hook_form_facets_facet_edit_form_alter

Altera el formulario de edición de facetas para agregar la selección de Coder de Pretty Paths cuando Pretty Paths está habilitado para la fuente de facetas.

Troubleshooting 6
Las URLs de facetas todavía muestran parámetros de cadena de consulta después de habilitar Pretty Paths

Asegúrate de haber seleccionado 'Pretty paths' como el manejador de URL en la configuración de la fuente de facetas, no solo en la faceta individual. Después de cambiar la configuración, limpia todas las cachés para reconstruir las rutas.

Los enlaces de facetas devuelven errores 404

Es posible que la ruta no se haya reconstruido. Limpia las cachés con 'drush cr' o vía /admin/config/development/performance. También verifica que la ruta base exista y que la fuente de facetas esté correctamente configurada.

Las facetas de términos de taxonomía muestran IDs en lugar de nombres

Cambia la configuración del Coder de Pretty Paths en la faceta de 'Default' a 'Nombre de término de taxonomía + id' o 'Nombre de término de taxonomía' dependiendo de tu preferencia.

Los filtros activos no se reconocen después de una actualización AJAX

Esto se abordó en el issue #3129632. Actualiza a la última versión del módulo. La corrección asegura que el contexto de facetas se extraiga de los parámetros de solicitud AJAX y los encabezados referer.

La ruta de URL se vuelve demasiado larga con muchos filtros activos

Debido a limitaciones de la base de datos, la tabla del router tiene un límite de ruta de 255 caracteres. El módulo agrega parámetros de marcador de posición para evitar problemas de enrutamiento del core, pero combinaciones de filtros extremadamente largas aún pueden exceder los límites. Considera reducir el número de facetas activas simultáneamente.

El Coder Taxonomy Term Name devuelve el término incorrecto

El coder de solo nombre busca todos los términos en los vocabularios configurados. Si múltiples términos tienen el mismo nombre, devuelve la primera coincidencia. Usa el coder 'Nombre de término de taxonomía + id' para unicidad garantizada.

Security Notes 3
  • Los valores de facetas en las URLs se sanitizan usando el limpiador de alias de Pathauto, que aplica transliteración y elimina caracteres no seguros
  • El módulo usa verificación de acceso al cargar entidades durante las operaciones de codificación/decodificación
  • La entrada de los segmentos de ruta de URL se valida correctamente contra las configuraciones de facetas existentes antes del procesamiento