Entity Reference Revisions
Proporciona un tipo de campo Entity Reference que almacena referencias a revisiones específicas de entidades, permitiendo relaciones de entidades compuestas con seguimiento de revisiones.
entity_reference_revisions
Install
composer require 'drupal/entity_reference_revisions:8.x-1.13'
composer require 'drupal/entity_reference_revisions:8.x-1.12'
composer require 'drupal/entity_reference_revisions:8.x-1.9'
Overview
El módulo Entity Reference Revisions extiende la capacidad de referencia de entidades de Drupal añadiendo soporte para revisiones. A diferencia del campo de referencia de entidad estándar que solo almacena el ID de la entidad, este módulo almacena tanto el ID de la entidad como el ID de revisión específico, permitiéndole mantener referencias a versiones exactas de las entidades.
Esto es particularmente importante para entidades compuestas como Paragraphs, donde las entidades hijas deben crear nuevas revisiones junto con sus entidades padres. El módulo gestiona la creación automática de revisiones cuando la entidad padre crea una nueva revisión, asegurando la integridad de los datos y un historial de revisiones adecuado.
El módulo también proporciona funcionalidad de limpieza de huérfanos para eliminar automáticamente las revisiones de entidades compuestas que ya no están referenciadas por ninguna entidad padre, ayudando a mantener la base de datos limpia y previniendo la acumulación de datos huérfanos.
Features
- Tipo de campo de referencia de entidad con seguimiento de revisiones que almacena tanto target_id como target_revision_id
- Creación automática de revisiones para entidades compuestas cuando el padre crea una nueva revisión
- Soporte para relaciones de entidades compuestas con seguimiento del tipo de padre, ID de padre y nombre del campo padre
- Limpieza de entidades compuestas huérfanas mediante interfaz de administración, comando Drush y cola de cron
- Integración con Views con plugins personalizados de display, style y row para selección de referencias de entidad
- Plugin de destino de migración para importar revisiones de entidades con mapeo de ID adecuado
- Integración con el módulo Diff para comparar campos de revisiones de referencias de entidad
- Soporte para referencias de entidades compuestas traducibles y no traducibles
- Integración con los widgets options_select y options_buttons del core
- Soporte de valores por defecto basados en UUID para desplegabilidad de configuración
Use Cases
Construir contenido modular con Paragraphs
El caso de uso más común es con el módulo Paragraphs. Al crear contenido estructurado con múltiples tipos de párrafos (texto, imágenes, galerías, etc.), Entity Reference Revisions asegura que cuando crea una nueva revisión de un nodo, todos los párrafos referenciados también obtienen nuevas revisiones. Esto mantiene un historial de revisiones completo y permite revertir a estados de contenido anteriores incluyendo todo el contenido de párrafos anidados.
Implementar componentes de contenido que pertenecen a su padre
Use Entity Reference Revisions cuando necesite entidades hijas que son 'propiedad' de una entidad padre y deben eliminarse cuando se elimina el padre. A diferencia de las referencias de entidad estándar donde la entidad referenciada es independiente, las entidades compuestas creadas mediante campos ERR están destinadas a existir solo como parte de su padre.
Mantener auditorías para estructuras de contenido complejas
Cuando el cumplimiento de contenido requiere rastrear cambios en todos los componentes de contenido, ERR asegura que el historial de revisiones se mantenga a lo largo de la jerarquía de contenido. Cada cambio en un componente anidado crea una nueva revisión que puede ser rastreada, comparada y revertida.
Limpiar componentes de contenido huérfanos
Use la interfaz de administración o el comando Drush para limpiar periódicamente entidades compuestas que ya no están referenciadas. Esto puede ocurrir cuando el contenido se elimina fuera de los flujos de trabajo normales o cuando se necesita mantenimiento de base de datos.
Migrar contenido con preservación de revisiones
Al migrar contenido desde otro sistema que incluye historial de revisiones, use el destino de migración entity_reference_revisions para importar entidades mientras preserva su estructura de revisiones y relaciones padre-hijo.
Tips
- Use Entity Reference Revisions para cualquier tipo de entidad que deba tratarse como una entidad compuesta/embebida que pertenece a su padre, no solo para Paragraphs
- Ejecute la limpieza de huérfanos periódicamente mediante cron o Drush, especialmente después de operaciones masivas de contenido o migraciones
- Al implementar tipos de entidad compuesta personalizados, incluya entity_revision_parent_type_field, entity_revision_parent_id_field y entity_revision_parent_field_name_field en la definición de su tipo de entidad
- Para migración, establezca new_revisions: true en la configuración de destino para preservar el contenido existente mientras añade revisiones migradas
- Los widgets options_select y options_buttons del core funcionan con campos Entity Reference Revisions - útil para conjuntos de selección limitados
- Monitoree la cola entity_reference_revisions_orphan_purger durante cron si experimenta problemas de rendimiento con grandes cantidades de contenido compuesto
Technical Details
Admin Pages 1
/admin/config/system/delete-orphans
Esta página administrativa le permite eliminar revisiones de entidades compuestas huérfanas que ya no están referenciadas por ninguna entidad padre. Las entidades huérfanas pueden ocurrir cuando se eliminan entidades padre o cuando se cambian los campos de referencia de entidad. Ejecutar esta limpieza ayuda a mantener la integridad de la base de datos y previene el aumento del almacenamiento.
Permissions 1
Hooks 4
hook_entity_revision_create
Crea nuevas revisiones de entidades compuestas cuando la entidad padre crea una nueva revisión. Asegura que los campos de revisiones de referencias de entidad no traducibles propaguen correctamente la creación de revisiones a sus entidades referenciadas.
hook_field_widget_info_alter
Añade el tipo de campo entity_reference_revisions a los widgets options_select y options_buttons, permitiendo que estos widgets estándar se utilicen para campos de revisiones de referencias de entidad.
hook_field_storage_config_update
Restablece la configuración del handler cuando se cambia el tipo de destino de un campo de revisiones de referencias de entidad, asegurando que la configuración del campo permanezca válida.
hook_entity_delete
Encola la limpieza de huérfanos para entidades compuestas cuando se elimina una entidad padre. Encuentra todas las revisiones de entidades compuestas que referencian a la entidad eliminada y las encola para el purgador de huérfanos.
Drush Commands 1
drush err:purge
Elimina revisiones de entidades compuestas huérfanas que ya no están referenciadas por ninguna entidad padre. Se ejecuta como un proceso por lotes con informe de progreso.
Security Notes 3
- El permiso 'delete orphan revisions' debe otorgarse con cuidado ya que el proceso de limpieza elimina datos permanentemente
- Siempre respalde su base de datos antes de ejecutar operaciones masivas de limpieza de huérfanos
- El formulario de administración de limpieza de huérfanos muestra una advertencia sobre la posible pérdida de datos si la limpieza identifica incorrectamente entidades en uso