Field Inheritance
Proporciona la capacidad de heredar datos de campo de una entidad a otra utilizando campos computados y estrategias de herencia configurables.
field_inheritance
Instalar
composer require 'drupal/field_inheritance:^3.0'
composer require 'drupal/field_inheritance:^2.0'
Overview
Field Inheritance es un módulo potente que permite a los administradores del sitio heredar cualquier campo de cualquier entidad en cualquier otra entidad. Puede considerarse como una alternativa de referencia de entidad a nivel de campo, donde en lugar de referenciar entidades completas, puedes obtener valores de campos específicos de entidades de origen a entidades de destino.
El módulo crea campos computados en las entidades de destino que recuperan y muestran dinámicamente datos de las entidades de origen. Este enfoque es particularmente útil para escenarios donde necesitas compartir datos comunes entre diferentes tipos de contenido sin duplicar los datos o crear relaciones de entidades complejas.
El módulo soporta cuatro estrategias de herencia: Inherit (obtener datos de campo directamente del origen), Prepend (colocar datos de destino sobre los datos de origen), Append (colocar datos de destino debajo de los datos de origen), y Fallback (mostrar datos de destino si están establecidos, de lo contrario mostrar datos de origen). Proporciona un sistema de plugins que permite a los desarrolladores extender la funcionalidad de herencia para tipos de campo específicos.
Features
- Crear campos computados que heredan datos de entidades de origen a entidades de destino dinámicamente
- Cuatro estrategias de herencia flexibles: Inherit, Prepend, Append y Fallback para diferentes casos de uso
- Soporte para todos los tipos de entidad con campos incluyendo nodes, términos de taxonomía, usuarios, block content y entidades personalizadas
- Arquitectura basada en plugins para manejar diferentes tipos de campo (plugin Default para cualquier tipo de campo, plugin Entity Reference para entity references, imágenes, archivos, paragraphs, webforms)
- Controles de mapeo a nivel de entidad y de campo para especificar qué entidad de origen proporciona datos para cada campo heredado
- Integración con Views para mostrar datos de campos heredados en vistas
- Integración con Token para usar valores de campos heredados en tokens
- Sistema de entidades de configuración que permite importar/exportar reglas de herencia
- Widget para editores de contenido para habilitar/deshabilitar herencia y seleccionar entidades de origen por elemento de contenido
- Soporte de contenido traducible con fallback de idioma para datos heredados
- Campo base añadido a los tipos de entidad habilitados para almacenar configuración de herencia por entidad
Use Cases
Heredar términos de taxonomía del contenido padre
Un sitio web tiene nodes 'Categoría' con campos de términos de taxonomía. Los nodes hijos 'Artículo' pueden heredar los términos de categoría de su Categoría padre, asegurando que los artículos sean etiquetados automáticamente con los mismos términos que su categoría sin selección manual.
Compartir imágenes de cabecera entre contenido relacionado
Un tipo de contenido 'Campaña' tiene un campo de imagen hero. Los nodes 'Evento' relacionados pueden heredar esta imagen hero, proporcionando consistencia visual a través de los materiales de la campaña. Usando la estrategia 'fallback', eventos individuales pueden sobrescribir con imágenes personalizadas cuando sea necesario.
Cascada de información de autor
Un tipo de contenido 'Serie' tiene información detallada del autor. Los nodes individuales 'Episodio' pueden heredar campos de autor de la Serie usando la estrategia 'inherit', eliminando duplicación de datos mientras mantiene atribución de autor consistente.
Combinar contenido del cuerpo de múltiples fuentes
Usando estrategias 'prepend' o 'append', combinar contenido del cuerpo de una entidad plantilla con texto específico del contenido. Por ejemplo, un descargo de responsabilidad de un node 'Plantilla' puede ser añadido automáticamente a todos los nodes 'Documento Legal'.
Variación de producto heredando datos del producto base
Un sitio de comercio electrónico tiene nodes 'Producto' con descripciones comunes. Los nodes 'Variación' de producto heredan la descripción base mientras añaden detalles específicos de la variación usando la estrategia 'prepend' o 'append'.
Tips
- Usa Entity Mappings para configuraciones más simples donde todos los campos heredados vienen de la misma entidad de origen, y Field Mappings cuando diferentes campos necesitan diferentes entidades de origen
- La estrategia 'fallback' es particularmente útil para proporcionar valores por defecto que pueden ser sobrescritos en entidades individuales
- Los campos heredados pueden mostrarse en Views, permitiéndote construir listados que incluyan datos heredados
- Al crear reglas de herencia para campos de referencia de entidad (incluyendo imágenes, archivos, paragraphs), el módulo selecciona automáticamente el plugin Entity Reference Field Inheritance para un manejo adecuado
- El campo base field_inheritance es revisionable, lo que significa que la configuración de herencia se rastrea por revisión cuando el tipo de entidad de destino soporta revisiones
- Exporta la configuración de herencia de campos usando config export para despliegue entre entornos
Technical Details
Admin Pages 7
/admin/structure/field_inheritance
Página principal de administración para el módulo Field Inheritance. Proporciona acceso a la lista de herencias de campos configuradas y configuración del módulo.
/admin/structure/field_inheritance/settings
Configurar ajustes globales para el módulo Field Inheritance, incluyendo qué tipos de entidad pueden usar herencia de campos.
/admin/structure/field_inheritance/settings/confirm
Página de confirmación mostrada al eliminar tipos de entidad de la herencia de campos. Advierte que todos los datos de Field Inheritance de los tipos de entidad eliminados se perderán.
/admin/structure/field_inheritance/list
Lista todas las reglas de herencia de campos configuradas mostrando etiqueta, machine name, tipo (estrategia de herencia), entidad/bundle de origen, campo de origen, entidad/bundle de destino y campo de destino.
/admin/structure/field_inheritance/add
Formulario para crear una nueva regla de herencia de campos, definiendo cómo se heredan los datos de campo de una entidad de origen a una entidad de destino.
/admin/structure/field_inheritance/{field_inheritance}/edit
Formulario para editar una regla de herencia de campos existente. Todos los campos excepto machine name pueden ser modificados.
/admin/structure/field_inheritance/{field_inheritance}/delete
Página de confirmación para eliminar una regla de herencia de campos. El campo computado será eliminado del bundle de destino.
Permisos 1
Hooks 3
hook_field_inheritance_inheritance_class_alter
Permite alterar la clase de herencia usada para construir el campo base heredado. Usar esto para proporcionar clases factory personalizadas para plugins de herencia específicos.
hook_field_inheritance_compute_value_alter
Permite alterar el valor computado para un campo heredado. Usar esto para modificar datos heredados antes de que sean devueltos.
hook_field_inheritance_info_alter
Permite alterar las definiciones de plugins de herencia de campos descubiertos.
Troubleshooting 5
Asegúrate de que el widget de Field Inheritance esté habilitado en el form display de la entidad y que la casilla 'Enable inheritance for this entity' esté marcada. También verifica que una entidad de origen esté seleccionada en la sección Field Mappings o Entity Mappings.
Al usar estrategias prepend, append o fallback, los campos de origen y destino deben ser del mismo tipo. Asegúrate de haber seleccionado campos compatibles.
Verifica que: 1) El bundle de destino tenga configurado un campo 'field_inheritance', 2) La entidad tenga herencia habilitada, 3) Una entidad de origen válida esté seleccionada, 4) La entidad de origen tenga datos en el campo de origen.
Solo los tipos de entidad con campos aparecen en la página de Settings. Los tipos de entidad personalizados deben implementar FieldableEntityInterface.
Los campos heredados se computan en tiempo de renderizado. Limpia las cachés si los cambios en la configuración de herencia no se reflejan. Los cambios en datos de la entidad de origen deberían aparecer inmediatamente sin limpiar caché.
Security Notes 3
- El permiso 'administer field inheritance' está marcado como acceso restringido - solo conceder a administradores de confianza
- La herencia de campos respeta el acceso a entidades - los usuarios solo pueden heredar de entidades que tienen acceso para ver
- Al heredar datos de campos sensibles, asegúrate de que los permisos de vista apropiados estén configurados tanto en entidades de origen como de destino