Diff

Compara revisiones de entidades campo por campo y muestra las diferencias visuales entre ellas.

diff
78,501 sites
124
drupal.org

Install

Drupal 11, 10 v8.x-1.9
composer require 'drupal/diff:8.x-1.9'
Drupal 9 v8.x-1.6
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
Configuración General de Diff /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.

Configuración de 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 no está disponible

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.

Algunos campos no aparecen en la comparación

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.

La comparación no muestra cambios entre revisiones

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.

Los botones de radio se comportan inesperadamente en la página de revisiones

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.