Search API Exclude Entity

Proporciona un tipo de campo y un procesador de Search API para excluir selectivamente entidades de la indexación en los índices de Search API.

search_api_exclude_entity
12,591 sites
22
drupal.org

Instalar

Drupal 11, 10 v3.0.0
composer require 'drupal/search_api_exclude_entity:^3.0'
Drupal 9 v2.0.0
composer require 'drupal/search_api_exclude_entity:^2.0'
Drupal 8 v8.x-1.4
composer require 'drupal/search_api_exclude_entity:8.x-1.4'

Overview

Search API Exclude Entity es el sucesor para Drupal 8+ del módulo Apache Solr Node Exclude. Permite a los administradores del sitio excluir nodos específicos y otras entidades de la indexación en los índices de búsqueda configurados mediante el framework Search API.

El módulo utiliza un enfoque de tipo de campo personalizado, proporcionando un tipo de campo dedicado, widget y formateador para controlar el estado de exclusión en las entidades. Esta arquitectura ofrece varias ventajas: posición del campo configurable, etiqueta y descripción por tipo de entidad/bundle; soporte para múltiples campos de exclusión en el mismo bundle de entidad para diferentes sistemas de búsqueda o índices; e integración automática con Views sin necesidad de plugins personalizados.

Cuando una entidad tiene marcado su campo de exclusión, el procesador de Search API evita que esa entidad sea añadida al índice de búsqueda durante las operaciones de indexación.

Features

  • Tipo de campo personalizado 'Search API Exclude Entity' que almacena un valor booleano indicando si una entidad debe ser excluida de los índices de búsqueda
  • Widget de campo configurable con opciones para el texto de la etiqueta del checkbox y si debe mostrarse en un contenedor de detalles en la sección 'Avanzado'
  • Formateador de campo que extiende el formateador booleano del core con formato de visualización 'Sí/No'
  • Plugin procesador de Search API que filtra las entidades marcadas para exclusión durante la etapa de indexación 'alter_items'
  • Configuración del procesador que permite seleccionar qué campos de exclusión usar por tipo de entidad para cada índice de búsqueda
  • Soporte para múltiples campos de exclusión por bundle de entidad, permitiendo exclusión de diferentes índices de búsqueda de forma independiente
  • Control de acceso basado en permisos para editar el estado de exclusión en las entidades
  • Integración con el módulo Single Content Sync para importación/exportación de valores del campo de exclusión
  • Integración con Views lista para usar sin requerir plugins personalizados

Use Cases

Excluir páginas de aterrizaje específicas de la búsqueda

Un equipo de marketing crea páginas de aterrizaje promocionales temporales que no deben aparecer en los resultados de búsqueda del sitio. Al añadir el campo Search API Exclude Entity al tipo de contenido de página de aterrizaje, los editores pueden marcar la opción de exclusión en cada página que quieran ocultar de la búsqueda mientras mantienen la página publicada y accesible mediante URL directa.

Múltiples índices de búsqueda con diferente contenido

Un sitio tiene tanto una búsqueda pública como una búsqueda interna para el personal, cada una usando diferentes índices de Search API. Al añadir dos campos de exclusión separados a los tipos de contenido y configurar el procesador de cada índice para usar el campo apropiado, los editores pueden controlar independientemente si el contenido aparece en la búsqueda pública, la búsqueda del personal, o ambas.

Excluir contenido con meta etiquetas noindex

Un sitio ya usa el módulo Metatag para establecer robots noindex en ciertas páginas. Usando el submódulo search_api_exclude_entity_metatag, estas páginas se excluyen automáticamente de los índices de Search API, asegurando consistencia entre lo que muestran los motores de búsqueda externos y la búsqueda interna.

Excluir contenido en borrador o equivalente a no publicado

Usando el submódulo search_api_exclude_entity_by_field, un sitio puede excluir contenido basándose en valores de campo como un desplegable 'status' configurado como 'Borrador' o 'Revisión', proporcionando un control más granular más allá del estado estándar publicado/no publicado.

Exclusión controlada por permisos para flujo de trabajo editorial

Solo los editores senior deberían poder excluir contenido de la búsqueda. Al otorgar el permiso 'edit search api exclude entity' solo al rol 'Editor Senior', los editores junior pueden crear y publicar contenido pero no pueden afectar la visibilidad en la búsqueda.

Tips

  • Añade el campo de exclusión a tu tipo de entidad antes de crear el índice de Search API para asegurar que el campo aparezca en la configuración del procesador inmediatamente.
  • Usa etiquetas de campo descriptivas para el checkbox para ayudar a los editores a entender qué índice de búsqueda será afectado, especialmente cuando uses múltiples campos de exclusión.
  • Considera colocar el campo de exclusión en la sección 'Avanzado' usando el ajuste 'Usar contenedor de detalles' del widget para mantener el formulario principal limpio.
  • Al probar, recuerda re-indexar después de hacer cambios en los ajustes de exclusión - la exclusión solo ocurre durante el proceso de indexación.
  • Para sitios con muchos tipos de contenido, puedes reutilizar el mismo campo entre bundles - el procesador detectará todas las instancias automáticamente.
  • El módulo funciona con cualquier backend de Search API incluyendo Solr, Elasticsearch y Database Search.

Technical Details

Permisos 1
Editar search api exclude entity

Permite a los usuarios modificar los ajustes de exclusión por objeto en las entidades. Los usuarios sin este permiso no podrán ver ni editar el campo de exclusión en los formularios de entidad.

Hooks 2
hook_form_field_storage_config_edit_form_alter

Oculta y deshabilita el contenedor de cardinalidad al editar el almacenamiento de campo para campos Search API Exclude Entity, ya que el campo solo soporta una cardinalidad de 1.

hook_entity_field_access

Controla el acceso de edición a los campos Search API Exclude Entity basándose en el permiso 'edit search api exclude entity'. Los usuarios sin este permiso no pueden editar el campo de exclusión en los formularios de entidad.

Troubleshooting 4
Las entidades excluidas siguen apareciendo en los resultados de búsqueda

Después de marcar el campo de exclusión en las entidades, debes re-indexar el contenido para que los cambios surtan efecto. Ve al índice de Search API y haz clic en 'Re-indexar' o usa el comando Drush 'drush sapi-r nombre_indice'. También verifica que el procesador Search API Exclude Entity esté habilitado y los campos correctos estén seleccionados en la configuración del procesador.

El campo de exclusión no es visible en los formularios de entidad

Asegúrate de tener el permiso 'edit search api exclude entity'. El acceso al campo está controlado por este permiso, y los usuarios sin él no verán el campo en los formularios.

El procesador no muestra campos para seleccionar

Asegúrate de haber añadido un campo 'Search API Exclude Entity' a al menos un tipo de entidad/bundle que esté incluido en las fuentes de datos de tu índice de búsqueda. El procesador solo muestra campos de tipos de entidad que están configurados como fuentes de datos en el índice.

El widget no aparece en la sección Avanzado

Revisa los ajustes del widget y asegúrate de que 'Usar contenedor de detalles' esté habilitado. También verifica que los ajustes de visualización del formulario coloquen el campo correctamente. Si usas un tema que no renderiza el grupo de formulario 'advanced', el campo puede aparecer en otro lugar.

Security Notes 2
  • El permiso 'edit search api exclude entity' controla quién puede modificar los ajustes de exclusión. Otorga este permiso con cuidado ya que afecta la visibilidad del contenido en los resultados de búsqueda.
  • Excluir contenido de la búsqueda no impide el acceso directo al contenido - solo afecta la visibilidad en el índice de búsqueda. Usa otros mecanismos de control de acceso si necesitas restringir el acceso al contenido por completo.