Diff
Compara revisiones de entidades campo por campo y muestra las diferencias visuales entre ellas.
diff
Install
composer require 'drupal/diff:8.x-1.9'
composer require 'drupal/diff:8.x-1.6'
Overview
El módulo Diff proporciona un sofisticado sistema de comparación de revisiones para entidades de contenido de Drupal. Reemplaza la pestaña estándar de Revisiones con una interfaz mejorada que permite a los usuarios seleccionar y comparar cualquier par de revisiones de una entidad de contenido.
El módulo ofrece múltiples diseños de visualización para la comparación de revisiones: Split Fields (vista lado a lado), Unified Fields (vista línea por línea) y Visual Inline (comparación de HTML renderizado usando el view mode de la entidad). Cada diseño proporciona diferentes perspectivas sobre cómo ha cambiado el contenido entre revisiones.
Diff utiliza un sistema flexible de plugins para manejar diferentes tipos de campo. Los plugins de field diff builder transforman los valores de los campos en cadenas comparables, mientras que los plugins de layout determinan cómo se muestra la comparación. Esta arquitectura hace que el módulo sea extensible y personalizable para varios tipos de contenido y casos de uso.
El módulo se integra con Content Moderation para mostrar los cambios de estado del flujo de trabajo en las descripciones de revisión, y proporciona plugins de campo de Views para construir interfaces personalizadas de comparación de revisiones.
Features
- Página mejorada de resumen de revisiones con selección de revisiones lado a lado usando botones de radio
- Múltiples opciones de diseño de comparación: Split Fields (lado a lado), Unified Fields (línea por línea) y Visual Inline (diff de HTML renderizado)
- Comparación campo por campo con plugins configurables de field diff builder para diferentes tipos de campo
- Soporte para comparar campos de texto, referencias a entidades, imágenes, archivos, enlaces, campos de lista y campos de comentarios
- Navegación entre cambios de revisión con enlaces de cambio Anterior/Siguiente
- Opciones de filtro para ver contenido sin procesar o contenido procesado con markdown
- Diseño Visual Inline usando la biblioteca HtmlDiffAdvanced para comparación de entidades renderizadas con view modes configurables
- Integración con Content Moderation mostrando estados del flujo de trabajo en las descripciones de revisión
- Integración con Views mediante plugins de campo diff__from y diff__to para vistas personalizadas de comparación de revisiones
- Arquitectura extensible de plugins que permite field diff builders y plugins de layout personalizados
- Comportamiento configurable de botones de radio para selección de revisiones (Exclusión simple o Restricciones lineales)
- Configuración por campo para la visualización de diff incluyendo visibilidad del título del campo y opciones de callback de markdown
- Generación automática de rutas para tipos de entidad revisionables con soporte de diff
Use Cases
Revisión de Flujo de Trabajo Editorial
Los editores de contenido pueden usar Diff para revisar cambios realizados por otros miembros del equipo antes de publicar. Al comparar el borrador actual con la versión publicada, los editores pueden ver exactamente qué texto fue añadido, eliminado o modificado, haciendo el proceso de revisión más eficiente y preciso.
Auditoría de Contenido y Seguimiento de Historial
Los administradores pueden rastrear la evolución de contenido importante a lo largo del tiempo. Al comparar cualquier par de revisiones históricas, pueden entender cómo ha cambiado el contenido, quién hizo los cambios (mediante mensajes de log de revisión), y verificar que los cambios se alinean con la estrategia de contenido.
Comparación de Traducciones
Para sitios multilingües, Diff ayuda a los traductores a entender qué cambió en el contenido fuente entre actualizaciones de traducción. Al comparar revisiones del idioma fuente, los traductores pueden enfocarse en actualizar solo las porciones que cambiaron.
Vista Previa Visual de Contenido
Usando el diseño Visual Inline, los creadores de contenido pueden ver cómo sus cambios afectan la apariencia renderizada del contenido. Esto es particularmente útil para tipos de contenido complejos con múltiples campos y opciones de formato.
Vistas Personalizadas de Revisiones
Los constructores de sitios pueden crear Views personalizadas mostrando listas de revisiones con capacidades de comparación. Usando los plugins de campo diff__from y diff__to, los usuarios pueden seleccionar cualquier par de revisiones de una lista y compararlas directamente.
Tips
- Habilita solo los plugins de layout que necesites para simplificar la interfaz de usuario para los editores de contenido
- Usa el comportamiento de radio 'Restricciones lineales' para guiar a los usuarios hacia la comparación de revisiones adyacentes cronológicamente
- Configura el diseño Visual Inline para usar el view mode 'Diff' para una comparación más limpia enfocada en los cambios de contenido
- Para campos de imagen, habilita la visualización de miniaturas en los ajustes del plugin de diff del campo para visualizar cambios de imagen
- Usa callbacks de markdown en campos de texto para eliminar HTML para comparaciones más limpias de solo texto
- Establece líneas de contexto apropiadas (iniciales/finales) según la longitud de tu contenido - menos líneas para contenido corto, más para artículos largos
Technical Details
Admin Pages 2
/admin/config/content/diff/general
Configura los ajustes globales para la funcionalidad de comparación de revisiones incluyendo plugins de layout, comportamiento de botones de radio y líneas de contexto para diseños basados en campos.
/admin/config/content/diff/fields
Configura los plugins de diff builder para cada tipo de campo en el sistema. Selecciona qué plugin maneja la comparación para cada campo y configura los ajustes específicos del campo.
Hooks 2
hook_field_diff_builder_info_alter
Altera las definiciones de plugins de field diff builder. Permite a los módulos modificar etiquetas de plugins, pesos u otras propiedades.
hook_diff_layout_builder_info_alter
Altera las definiciones de plugins de diff layout builder. Permite a los módulos modificar etiquetas de plugins de layout, descripciones u otras propiedades.
Troubleshooting 4
El diseño Visual Inline requiere la biblioteca php-htmldiff-advanced. Instálala usando Composer: composer require caxy/php-htmldiff. El diseño estará automáticamente disponible una vez que la biblioteca esté instalada.
Revisa la página de Configuración de Campos en /admin/config/content/diff/fields. Asegúrate de que el campo tenga un plugin de diff seleccionado (no "No comparar"). También verifica que el campo sea revisionable y tenga configurada la visualización.
Asegúrate de que las revisiones realmente contengan valores diferentes para los campos comparados. Verifica que el plugin de diff del campo esté configurado correctamente. Para campos de entity reference, verifica que el método de comparación (ID vs Etiqueta) coincida con tus expectativas.
Ajusta la configuración de Comportamiento de Radio en /admin/config/content/diff/general. 'Exclusión simple' previene seleccionar la misma revisión; 'Restricciones lineales' impone un orden de selección cronológico.