Node Revision Delete
Un módulo que rastrea y elimina automáticamente revisiones antiguas de nodos basándose en reglas de plugins configurables.
node_revision_delete
Install
composer require 'drupal/node_revision_delete:^2.0'
Overview
El módulo Node Revision Delete proporciona una solución integral para gestionar y eliminar automáticamente revisiones antiguas de nodos en Drupal. Utiliza una arquitectura basada en plugins que permite una configuración flexible de reglas de eliminación basadas en múltiples criterios.
Cuando se crean nuevas revisiones, el contenido se añade automáticamente a una cola de procesamiento. El trabajador de cola evalúa cada revisión contra todos los plugins habilitados para determinar si debe eliminarse. El sistema de plugins utiliza un mecanismo de votación: si cualquier plugin devuelve FALSE, la revisión se conserva; si al menos uno devuelve TRUE y ninguno devuelve FALSE, la revisión se elimina.
El módulo soporta configuraciones específicas por tipo de contenido, contenido multilingüe con seguimiento separado de revisiones por idioma, e incluye comandos Drush para operaciones por lotes. Se integra perfectamente con el flujo de trabajo de Content Moderation de Drupal para gestionar revisiones en borrador.
Features
- Arquitectura basada en plugins para reglas flexibles de eliminación de revisiones con cuatro plugins integrados: Amount, Created, Drafts y Only Drafts
- Encolado automático de contenido cuando se crean nuevas revisiones, con opción para desactivar el encolado automático
- Configuraciones específicas por tipo de contenido con respaldo a valores predeterminados globales
- Soporte para contenido multilingüe con conteo separado de revisiones por idioma
- Interfaz de procesamiento por lotes para encolar todo el contenido existente para limpieza de revisiones
- Trabajador de cola que procesa eliminaciones de revisiones durante cron (ventana de procesamiento de 5 minutos)
- Opción de registro detallado para rastrear todas las revisiones eliminadas
- Integración con Content Moderation para gestión de revisiones en borrador
- Eliminación masiva manual de revisiones anteriores desde la página de confirmación de eliminación de revisiones
- Comandos Drush para operaciones por lotes desde línea de comandos y eliminación manual de revisiones
Use Cases
Limitar revisiones por cantidad
Un sitio web de noticias quiere conservar solo las últimas 10 revisiones de artículos para ahorrar espacio en la base de datos. Configure el plugin Amount con un mínimo de 10 revisiones. Cuando un artículo excede este límite, las revisiones más antiguas se eliminan automáticamente durante el procesamiento de cron.
Limpieza de revisiones basada en tiempo
Un sitio corporativo necesita cumplir con políticas de retención de datos que requieren que el contenido de más de 12 meses sea purgado. Habilite el plugin Created con edad establecida en 12 meses. Las revisiones de más de un año serán eliminadas automáticamente.
Limpieza de revisiones en borrador
Un equipo editorial crea muchas revisiones en borrador durante la revisión de contenido. Para prevenir el crecimiento excesivo de la base de datos, habilite el plugin Drafts con un límite de edad de 3 meses. Las revisiones en borrador abandonadas de más de 3 meses se eliminan automáticamente mientras se preserva el historial de revisiones publicadas.
Gestión de contenido multilingüe
Un sitio multilingüe mantiene historiales de revisiones separados para cada idioma. El módulo rastrea automáticamente las revisiones por idioma, asegurando que el conteo mínimo de revisiones configurado se mantenga independientemente para cada traducción.
Limpieza masiva manual
Durante una auditoría del sitio, un administrador necesita eliminar todas las revisiones anteriores a una revisión específica. Use el comando Drush 'drush nrd:delete-prior-revisions [nid] [vid]' para eliminar interactivamente las revisiones históricas, o use la opción de la interfaz al eliminar una revisión para también eliminar todas las revisiones anteriores.
Integración con flujo de trabajo de Content Moderation
Un flujo de trabajo de publicación usa Content Moderation con estados de borrador, revisión y publicado. Habilite el plugin Only Drafts para apuntar específicamente y limpiar revisiones antiguas en borrador mientras preserva el historial completo del contenido publicado para propósitos de cumplimiento.
Mantenimiento programado con auto-encolado deshabilitado
Un sitio de alto tráfico quiere controlar cuándo ocurre el procesamiento de limpieza de revisiones. Deshabilite el encolado automático en la configuración y use una tarea programada para ejecutar 'drush node-revision-delete:queue' durante horas de bajo tráfico, seguido de 'drush queue:run node_revision_delete'.
Tips
- Habilite el registro detallado durante la configuración inicial para monitorear qué revisiones se eliminan y por cuáles plugins
- Use el módulo Queue UI para monitorear la cola de node_revision_delete y solucionar problemas de procesamiento
- Combine los plugins Amount y Created para cobertura integral - Amount asegura revisiones mínimas mientras Created maneja revisiones antiguas
- Pruebe las configuraciones en un entorno de staging antes de desplegar a producción, especialmente para sitios con grandes historiales de revisiones
- Para sitios grandes, considere deshabilitar el encolado automático y programar el comando drush queue durante horas de bajo tráfico
- El plugin Only Drafts requiere Content Moderation; para sitios sin flujo de trabajo, use el plugin Drafts regular en su lugar
- Respalde su base de datos antes de ejecutar operaciones de eliminación masiva, especialmente usando el comando Drush delete-prior-revisions
Technical Details
Admin Pages 2
/admin/config/content/node_revision_delete
Página principal de configuración del módulo Node Revision Delete. Muestra una tabla de todos los tipos de contenido con su estado de configuración actual (Predeterminado o Personalizado) y proporciona acceso para configurar cada tipo de contenido. Debajo de la tabla, se pueden establecer las configuraciones predeterminadas de plugins que aplican a todos los tipos de contenido sin personalizaciones.
/admin/structure/types/manage/{node_type}
Configuración por tipo de contenido para Node Revision Delete, disponible como una pestaña vertical en el formulario de edición del tipo de contenido. Los ajustes aquí anulan los valores predeterminados globales.
Permissions 1
Hooks 1
hook_node_revision_delete_info_alter
Alterar las definiciones de plugins de node revision delete. Este hook es invocado por el gestor de plugins para permitir que los módulos modifiquen las definiciones de plugins.
Drush Commands 2
drush node-revision-delete:queue
Añade todo el contenido a una cola para eliminar revisiones. Crea elementos de cola para todos los nodos que tienen al menos un plugin habilitado, los cuales se procesan durante cron.
drush nrd:delete-prior-revisions
Elimina todas las revisiones anteriores a una revisión especificada para un nodo dado. Comando interactivo que solicita confirmación y ofrece eliminar también la revisión especificada.
Troubleshooting 5
Asegúrese de que al menos un plugin esté habilitado globalmente o para el tipo de contenido específico. Verifique que 'Deshabilitar encolado automático' no esté activado. Confirme que cron se ejecuta regularmente. Revise la cola usando el módulo Queue UI o 'drush queue:list' para ver elementos pendientes.
Múltiples plugins pueden prevenir la eliminación. Si cualquier plugin devuelve FALSE para una revisión, esta se conservará. Revise todos los plugins habilitados y sus configuraciones. El plugin Amount puede estar conservando revisiones que el plugin Created eliminaría, o viceversa.
El trabajador de cola tiene un límite de tiempo de 300 segundos por ejecución de cron. Para sitios grandes, pueden necesitarse múltiples ejecuciones de cron. Use 'drush queue:run node_revision_delete' para procesar la cola manualmente. Considere aumentar los límites de memoria de PHP para lotes grandes.
Después de cambiar configuraciones, el caché del gestor de plugins necesita limpiarse. Limpie cachés vía 'drush cr' o Administración > Configuración > Desarrollo > Rendimiento. Verifique que el tipo de contenido muestre 'Overridden' en la página de configuración.
El módulo rastrea revisiones por idioma separadamente. Si las revisiones parecen eliminarse incorrectamente para traducciones, verifique la afiliación de idioma de la revisión comprobando isRevisionTranslationAffected() en la revisión.
Security Notes 3
- El permiso 'Administrar Node Revision Delete' solo debe otorgarse a administradores de confianza ya que controla políticas de retención de contenido
- La eliminación de revisiones es permanente y no puede deshacerse - asegúrese de tener procedimientos de respaldo apropiados implementados
- El módulo respeta el control de acceso de Drupal - el trabajador de cola usa accessCheck(FALSE) para operaciones internas pero esto es apropiado para tareas de limpieza basadas en cron