Entity Extra Field
Permite a los administradores del sitio agregar varios campos extra (blocks, views, tokens, plantillas Twig, enlaces de entidad o componentes) a cualquier visualización de entidad, soportando tanto formularios como vistas de visualización.
entity_extra_field
Overview
El módulo Entity Extra Field proporciona una forma potente y flexible de agregar contenido adicional a las visualizaciones de entidades sin escribir código personalizado. Permite a los constructores de sitios colocar blocks, views, contenido basado en tokens, plantillas Twig, enlaces de entidad o Single Directory Components (SDC) como campos extra en cualquier entidad de contenido.
Estos campos extra pueden posicionarse junto a los campos regulares en las visualizaciones de entidades (para visitantes) o en los formularios (para editores), lo que lo hace ideal para diseños complejos donde el contenido dinámico adicional necesita aparecer dentro del contexto de la entidad. El módulo incluye un sistema integral de condiciones que permite que los campos aparezcan solo cuando se cumplen condiciones específicas (como roles de usuario, tema actual o ruta de solicitud).
Cada campo extra se almacena como una entidad de configuración, lo que lo hace exportable y desplegable entre entornos. El módulo sigue la arquitectura de plugins de Drupal, permitiendo a los desarrolladores crear plugins personalizados de tipos de campos extra para extender la funcionalidad más allá de los seis tipos incorporados.
Features
- Agregar blocks como campos extra en visualizaciones de entidades, con acceso completo a la configuración del block y contexto
- Renderizar displays de Views como campos extra con soporte para argumentos contextuales y desplazamiento basado en tokens
- Crear campos extra basados en tokens para contenido de texto dinámico con soporte de formato de texto
- Escribir plantillas Twig personalizadas como campos extra con acceso a la entidad y variables globales de Twig
- Agregar enlaces de entidad (canonical, edit-form, delete-form, etc.) como campos extra configurables
- Renderizar Single Directory Components (SDC) como campos extra con mapeo de props y slots
- Visualización condicional basada en plugins de condición de Drupal (rol de usuario, ruta de solicitud, tema actual, etc.)
- Soporte para visualizaciones de entidades y formularios de edición de entidades
- Soporte completo de traducción de configuración para sitios multilingües
- Arquitectura de plugins extensible que permite tipos de campos extra personalizados
- Funciona con cualquier tipo de entidad que tenga Field UI habilitado (nodes, usuarios, términos de taxonomía, media, etc.)
- Sugerencias de tema para sobreescritura granular de plantillas por tipo de entidad, bundle, nombre de campo y modo de vista
Use Cases
Agregar título de página como campo
Usar el tipo de campo Token con el token [node:title] para renderizar el título de la página como un campo posicionable dentro del área de contenido, permitiendo que se coloque entre otros campos en lugar de en la plantilla de página.
Incrustar view de contenido relacionado
Usar el tipo de campo Views para incrustar una view de 'Artículos relacionados' que acepta el ID del nodo actual como argumento de filtro contextual usando el token [node:nid], mostrando contenido relacionado dentro de la visualización del nodo.
Agregar enlaces de edición contextuales
Usar el tipo de campo Enlace de entidad con la plantilla 'edit-form' para agregar un enlace de edición que solo aparece para usuarios con permiso de edición, posicionado en cualquier lugar dentro de la visualización de la entidad.
Mostrar block personalizado entre campos
Usar el tipo de campo Block para renderizar un banner promocional o block de llamada a la acción entre campos de contenido específicos, en lugar de en una región de barra lateral.
Visualización condicional de biografía del autor
Crear un campo extra Twig que renderiza información de biografía del autor, con una condición de Rol de usuario para que solo aparezca para usuarios autenticados o roles específicos.
Renderizar componente del sistema de diseño
Usar el tipo de campo Componente para renderizar un componente de tarjeta SDC, mapeando el título y resumen del nodo a props del componente, asegurando un diseño consistente en todo el sitio.
Agregar botones para compartir en redes sociales
Usar el tipo de campo Block para incrustar un block de compartir en redes sociales dentro del área de contenido del artículo, con condiciones de Ruta de solicitud para mostrarlo solo en rutas de contenido específicas.
Texto de ayuda en modo formulario
Crear un campo extra Twig en el tipo de visualización Formulario para agregar texto instructivo o guías que aparecen dentro del formulario de edición de la entidad, ayudando a los editores a entender los requisitos de los campos.
Tips
- El submódulo UI puede deshabilitarse en entornos de producción para reducir la sobrecarga, ya que las configuraciones de campos extra se almacenan como entidades de configuración y no requieren la UI para funcionar
- Usar sugerencias de plantilla (entity_extra_field__[type]__[bundle]__[field_name].html.twig) para estilos específicos de campo sin modificar la plantilla base
- El reemplazo de tokens en argumentos de Views soporta campos de referencia de entidad, permitiendo pasar IDs de entidades referenciadas a filtros contextuales
- Los campos extra respetan las etiquetas y contextos de caché de entidad, asegurando la invalidación apropiada de caché cuando las entidades o configuraciones cambian
- Para plantillas Twig complejas, considerar implementar hook_entity_extra_field_twig_context_alter para agregar variables personalizadas en lugar de poner toda la lógica en la plantilla
- Los campos extra de Block reciben automáticamente la entidad objetivo como contexto, por lo que los blocks conscientes del contexto (como aquellos que usan @entity_extra_field.target_entity) funcionan correctamente
- Los plugins de condición son reutilizables - configurar una condición una vez y se aplica cada vez que ese campo se renderiza, independientemente del modo de visualización usado
Technical Details
Admin Pages 2
/admin/structure/types/manage/{node_type}/extra-fields
Lista todos los campos extra configurados para el bundle de entidad. Muestra la etiqueta del campo, tipo de campo y tipo de visualización (formulario o vista) para cada campo extra. Proporciona operaciones para editar, eliminar o traducir cada campo. Esta página está disponible dinámicamente para cualquier tipo de entidad con soporte de Field UI (nodes, usuarios, términos de taxonomía, media, paragraphs, etc.).
/admin/structure/types/manage/{node_type}/extra-fields/add
Formulario para crear un nuevo campo extra para el bundle de entidad. Configurar el nombre del campo, tipo de visualización, tipo de campo y configuraciones específicas del tipo. Las configuraciones adicionales de condición controlan cuándo aparece el campo.
Permissions 1
Hooks 2
hook_entity_extra_field_twig_context_alter
Altera las variables de contexto Twig disponibles al renderizar campos extra de tipo Twig. Permite a los módulos agregar variables personalizadas al contexto de la plantilla Twig.
hook_extra_field_type_info_alter
Altera las definiciones de plugins de tipo de campo extra descubiertas por el gestor de plugins
Troubleshooting 7
Después de crear un campo extra, navegar a 'Gestionar visualización' (para campos de vista) o 'Gestionar visualización de formulario' (para campos de formulario) y arrastrar el nuevo campo extra desde la sección Deshabilitado a la posición deseada en la visualización.
Limpiar la caché de Drupal después de hacer cambios a la configuración del campo extra. El módulo almacena en caché las definiciones de campos por rendimiento.
Verificar que el block seleccionado tiene los permisos de acceso apropiados. Algunos blocks requieren contextos específicos que pueden no estar disponibles en todas las visualizaciones de entidad.
Verificar que la view tiene contenido y que los filtros contextuales (argumentos) están correctamente configurados. Usar el navegador de tokens para asegurar la sintaxis correcta de tokens para los argumentos.
La plantilla Twig se valida al guardar. Asegurar la sintaxis Twig correcta. Usar {{ entity.field_name.value }} para acceder a valores de campos de la entidad. Verificar las variables de contexto disponibles listadas en el formulario.
El tipo de campo Componente requiere el módulo SDC (Single Directory Components). En Drupal 10.3+, SDC está incluido en core. Para versiones anteriores, asegurar que el módulo contrib SDC está instalado.
Verificar la casilla 'Todas las condiciones deben cumplirse'. Cuando está desmarcada, el campo se muestra si CUALQUIER condición se cumple. Cuando está marcada, TODAS las condiciones deben cumplirse. Probar cada condición individualmente.
Security Notes 4
- El permiso 'administer entity extra field' solo debe otorgarse a administradores de confianza, ya que las plantillas Twig pueden potencialmente exponer información sensible o causar problemas de rendimiento
- Los campos extra de Block respetan el control de acceso del block subyacente - si un usuario no puede acceder a un block normalmente, no lo verá como campo extra
- El reemplazo de tokens usa el sistema de tokens de Drupal con clear=TRUE, que elimina los tokens no reemplazados de la salida para evitar que la sintaxis de tokens se muestre a los usuarios finales
- Los campos extra de enlace de entidad respetan el acceso a la entidad - los enlaces a operaciones de edición o eliminación solo se renderizan si el usuario actual tiene permiso para esas operaciones