Entity Browser
Proporciona un navegador/selector de entidades genérico y altamente extensible que puede utilizarse en cualquier contexto donde se necesite seleccionar entidades.
entity_browser
Install
composer require 'drupal/entity_browser:8.x-2.15'
Overview
Entity Browser es un módulo integral que proporciona una interfaz estandarizada y altamente personalizable para explorar, crear y seleccionar entidades en Drupal. Ofrece una arquitectura flexible basada en plugins con múltiples opciones de visualización (modal, iframe, independiente), varios tipos de widgets para la selección de entidades (Views, carga de archivos, carga de imágenes de medios) y visualizaciones de selección personalizables.
El módulo se integra perfectamente con los campos de referencia de entidades, proporcionando widgets de campo especializados que mejoran la experiencia de selección de entidades. Incluye soporte para flujos de trabajo de selección de múltiples pasos, reordenación mediante arrastrar y soltar, validación de cardinalidad y filtrado contextual de bundles. Entity Browser es particularmente útil para la gestión de medios, flujos de trabajo de edición de contenido y cualquier escenario que requiera capacidades sofisticadas de selección de entidades.
Diseñado pensando en la extensibilidad, los desarrolladores pueden crear plugins personalizados para visualizaciones, widgets, selectores de widgets, visualizaciones de selección, visualizaciones de widgets de campo y validación. El módulo también proporciona un sistema completo de eventos para personalizar el comportamiento en varias etapas del proceso de selección.
Features
- Instancias configurables de navegador de entidades con etiquetas y nombres de máquina personalizables
- Múltiples plugins de visualización: diálogo Modal, incrustado en iFrame y página independiente
- Plugins de widget para selección de entidades: selección basada en Views, carga de archivos y carga de imágenes de medios
- Plugins de selector de widgets: pestañas y menú desplegable para navegar entre múltiples widgets
- Plugins de visualización de selección: visualización de múltiples pasos con zona de selección en progreso, y sin visualización para selección inmediata
- Plugins de visualización de widget de campo: etiqueta de entidad, miniatura de imagen y visualizaciones de entidad renderizada
- Widget de campo de referencia de entidad con botones de editar, eliminar y reemplazar
- Widget de campo de archivo/imagen con edición de metadatos (alt, título, descripción)
- Validación de cardinalidad y validación de tipo de entidad
- Reordenación de entidades seleccionadas mediante arrastrar y soltar
- Integración con Views con plugin de visualización personalizado y campo de formulario de selección
- Filtrado contextual de bundles en Views
- Soporte para preselección en modo de edición
- Arquitectura basada en eventos para personalización
- Callbacks de JavaScript para selección de entidades basada en AJAX
- Soporte de tokens para ubicaciones de carga
- Integración con el módulo Inline Entity Form para crear entidades dentro del navegador
Use Cases
Alternativa a Media Library
Crea un navegador de medios personalizado con listado de medios basado en Views, widget de carga para nuevos medios y vistas previas en miniatura. Usa visualización modal para un flujo de trabajo de edición de contenido sin interrupciones.
Campo de referencia de contenido
Reemplaza el autocompletado de referencia de Entity por defecto con un navegador visual de Entity. Configura una View que muestre contenido con imágenes y usa la visualización 'rendered_entity' para vistas previas enriquecidas.
Campo de imagen con selección de galería
Usa entity browser con el widget de Field de archivo/imagen. Configura visualización de selección en múltiples pasos para revisar las selecciones antes de confirmar. Habilita reordenamiento mediante arrastrar y soltar.
Creación de Entity en línea
Habilita el submódulo entity_browser_entity_form y añade el widget 'Entity form' junto al widget de View. Los usuarios pueden seleccionar Entities existentes o crear nuevas sin salir del navegador.
Selección contextual de Entity
Usa el filtro entity_browser_bundle y el argumento por defecto entity_browser_widget_context para mostrar solo Entities que coincidan con la configuración de bundle objetivo del Field.
Incrustación de Entity en WYSIWYG
Integra con el módulo Entity Embed para permitir a los editores navegar e incrustar Entities (media, Nodes) directamente desde el editor WYSIWYG usando entity browser.
Tips
- Usa la opción 'Auto select' en widgets de View para selección con un solo clic sin necesidad de presionar un botón de envío
- Habilita 'Selection hidden by default' en la visualización de múltiples pasos para una interfaz más limpia cuando el área de selección no se necesita inmediatamente
- Usa la opción del botón 'Replace' para Fields de valor único para permitir reemplazo rápido sin el flujo manual de eliminar y luego añadir
- Aprovecha hook_entity_browser_view_executable_alter para pasar argumentos contextuales a Views basándose en la página actual
- Usa diferentes entity browsers para diferentes casos de uso en lugar de un navegador complejo
- Prueba con el módulo entity_browser_example habilitado para ver configuraciones funcionales
- Para mejor rendimiento con grandes conjuntos de Entities, usa Views habilitadas con AJAX y paginación
- Considera la cardinalidad al elegir entre casillas de verificación y botones de radio - el widget de View cambia automáticamente según la cardinalidad
Technical Details
Admin Pages 3
/admin/config/content/entity_browser
Lista todos los entity browsers configurados. Desde aquí puede agregar nuevos navegadores, editar los existentes, configurar widgets o eliminar navegadores.
/admin/config/content/entity_browser/add
Crea una nueva configuración de entity browser con ajustes de visualización, selector de widgets y visualización de selección.
/admin/config/content/entity_browser/{entity_browser}/widgets
Configure los widgets para el entity browser. Agregue, elimine y reordene widgets que proporcionan diferentes formas de seleccionar entidades.
Permissions 2
Hooks 9
hook_entity_browser_display_info_alter
Modifica las definiciones de plugins de visualización
hook_entity_browser_widget_info_alter
Modifica las definiciones de plugins de widget
hook_entity_browser_selection_display_info_alter
Modifica las definiciones de plugins de visualización de selección
hook_entity_browser_widget_selector_info_alter
Modifica las definiciones de plugins de selector de widgets
hook_entity_browser_field_widget_display_info_alter
Modifica las definiciones de plugins de visualización de widgets de campo
hook_entity_browser_widget_validation_info_alter
Modifica las definiciones de plugins de validación de widgets
hook_form_entity_browser_form_alter
Modifica cualquier formulario de entity browser (alteración por ID de formulario base)
hook_form_entity_browser_ENTITY_BROWSER_ID_form_alter
Modifica un formulario específico de entity browser por ID
hook_entity_browser_view_executable_alter
Modifica el ejecutable de vista en el widget de vista antes del renderizado
Troubleshooting 6
Asegúrate de que la biblioteca de diálogo AJAX de Drupal esté cargada. Revisa la consola del navegador en busca de errores de JavaScript. Verifica que entity browser tenga una configuración válida.
Añade el Field 'Entity browser select form' a tu View. Este Field debe estar presente para que la selección funcione.
Verifica la configuración de cardinalidad. Si usas el modo 'Edit selection', asegúrate de que el plugin de visualización de selección soporte preselección (usa Multi step display, no No display).
Verifica que la configuración 'Allowed file extensions' en el widget de carga coincida con tus requisitos. Comprueba los límites de carga de PHP.
El filtro entity_browser_bundle obtiene valores del contexto del widget. Asegúrate de que tu widget de Field pase target_bundles en widget_context.
Verifica los permisos del usuario para 'access [browser_id] entity browser pages'. Comprueba que la View tenga resultados y que el tipo de visualización sea 'Entity browser'.
Security Notes 4
- El permiso 'administer entity browsers' está restringido y solo debe otorgarse a administradores de confianza
- Entity browser respeta el acceso a Entity - los usuarios solo pueden seleccionar Entities a las que tengan acceso de visualización
- Los widgets de carga de archivos heredan la validación a nivel de Field para extensiones y tamaño de archivo
- El botón de edición en widgets de Field verifica el acceso de actualización de Entity antes de mostrarse