Workflows revisión editorial y publicación en Drupal
Cómo crear workflows de revisión editorial y publicación programada en Drupal
Cuando varias personas redactan, revisan y aprueban contenido antes de publicarlo, el equipo necesita un sistema que ordene cada paso. Drupal trae para esto herramientas nativas y módulos contribuidos que permiten definir estados editoriales, atar las transiciones a roles concretos y fijar la fecha exacta en que un contenido aparece o se retira. En las próximas secciones veremos cómo montar ese flujo desde cero, con módulos reales y configuraciones replicables en cualquier proyecto.
Qué problema resuelven los workflows editoriales
Sin un flujo definido aparecen siempre los mismos errores: artículos que salen sin revisar, dos personas trabajando sobre el mismo borrador y duplicando páginas, o contenido que debía publicarse un lunes a las nueve y nadie pulsó el botón.
Un workflow editorial corrige estas situaciones con reglas claras. Cada contenido recorre estados definidos (borrador, en revisión, aprobado, publicado) y solo quienes tienen el rol adecuado pueden moverlo de uno a otro. Se reducen errores, mejora la trazabilidad y se libera tiempo que antes se iba en coordinación por correo o mensajería.
Drupal incorpora esta capacidad de forma nativa desde la versión 8.5 mediante el módulo Content Moderation, que viaja en el núcleo. Para disponer de un sistema básico de estados y transiciones no hace falta instalar nada externo.
Módulos necesarios para el flujo completo
Content Moderation (núcleo)
Content Moderation permite asociar estados de moderación a los tipos de contenido. Los estados predeterminados son Draft, Published y Archived, y se pueden crear los que el proyecto pida. Las transiciones definen qué movimientos entre estados son posibles y qué roles pueden ejecutar cada uno.
Para activarlo, entra en Extend (/admin/modules) y habilita los módulos Content Moderation y Workflows, ambos incluidos en el núcleo desde Drupal 9.
Scheduler
Scheduler es un módulo contribuido que añade campos de fecha para programar la publicación y despublicación automática de nodos. Funciona apoyado en cron: cada vez que se ejecuta el cron de Drupal, el módulo revisa qué contenidos tienen ya vencida su fecha programada y cambia su estado.
Instálalo con Composer:
composer require drupal/scheduler
drush en scheduler -y
Desde la versión 2.x, Scheduler se integra directamente con Content Moderation, lo que permite programar transiciones entre estados de moderación y no solo entre publicado y no publicado.
Módulos complementarios recomendados
- Content Moderation Notifications: envía correos automáticos cuando un contenido cambia de estado. Útil para avisar al revisor de que tiene un artículo esperándole.
- Moderation Dashboard: ofrece un panel donde cada usuario ve los contenidos que requieren su acción, agrupados por estado.
- Moderation Sidebar: añade un panel lateral en el front-end para cambiar el estado de moderación sin entrar al back-end.
- Revision Log Default: rellena automáticamente el campo de log de revisión y facilita la trazabilidad.
Configurar el workflow paso a paso
Paso 1: Definir los estados editoriales
Accede a Administración > Configuración > Workflows (/admin/config/workflow/workflows). Edita el workflow existente o crea uno nuevo. Los estados más habituales en un equipo de contenidos son:
- Borrador: el redactor está trabajando en el contenido.
- Necesita revisión: el contenido está listo para que un editor lo revise.
- Revisado con cambios: el editor ha revisado, pero pide modificaciones al redactor.
- Aprobado: el contenido ha pasado la revisión y está listo para publicarse.
- Publicado: el contenido es visible en el sitio.
- Archivado: el contenido se ha retirado de la web pero no se ha eliminado.
Evita añadir estados que nadie vaya a utilizar. Cada estado extra añade complejidad al flujo. Si tu equipo se reduce a un redactor y un revisor, probablemente bastará con Borrador, Necesita revisión, Publicado y Archivado.
Paso 2: Definir las transiciones
Las transiciones determinan qué movimientos están permitidos. Algunos ejemplos:
| Desde | Hasta | Quién puede |
|---|---|---|
| Borrador | Necesita revisión | Redactor |
| Necesita revisión | Revisado con cambios | Editor |
| Necesita revisión | Aprobado | Editor |
| Revisado con cambios | Necesita revisión | Redactor |
| Aprobado | Publicado | Editor, Administrador |
| Publicado | Archivado | Administrador |
| Archivado | Borrador | Redactor |
Configura cada transición en la pantalla del workflow. Para cada una, selecciona los roles que pueden ejecutarla. La asignación se gestiona mediante permisos, que aparecen en Administración > Personas > Permisos una vez creadas las transiciones.
Paso 3: Asociar el workflow a tipos de contenido
En la misma pantalla de edición del workflow, dentro de la sección This workflow applies to, selecciona los tipos de contenido que deben usar este flujo. Es posible mantener workflows distintos para tipos de contenido diferentes: uno sencillo para noticias breves y otro más completo para páginas institucionales.
Paso 4: Crear los roles y asignar permisos
Ve a Administración > Personas > Roles y crea los roles necesarios (Redactor, Editor, Administrador de contenidos). Después, en la pantalla de permisos, localiza las secciones de Content Moderation y asigna cada transición al rol correspondiente.
Presta atención a un detalle importante: el permiso "Use transition X" no equivale al permiso genérico "Administer content moderation". Este último abre todas las transiciones de golpe y rompe la separación de responsabilidades. Asigna solo los permisos de transición específicos a cada rol.
Configurar la publicación programada
Integrar Scheduler con Content Moderation
Una vez instalado Scheduler, abre la configuración del tipo de contenido que quieres programar en Administración > Estructura > Tipos de contenido > [tipo] > Editar > Scheduler. Aquí encontrarás opciones para habilitar la publicación y despublicación programada.
Con la integración de Content Moderation, Scheduler permite definir a qué estado de moderación debe transicionar el contenido cuando llegue la fecha programada. Un ejemplo concreto: configura que un contenido en estado "Aprobado" pase automáticamente a "Publicado" el día y hora que indiques en el campo de fecha.
Configurar cron correctamente
Scheduler depende de cron para funcionar. Si tu cron se ejecuta cada hora, la publicación programada puede retrasarse hasta 59 minutos. Para contenidos sensibles al horario, configura cron para que se ejecute cada cinco o diez minutos.
Puedes apoyarte en el módulo Ultimate Cron para ejecutar solo las tareas de Scheduler con mayor frecuencia, sin sobrecargar el sistema con ejecuciones completas de cron. Otra alternativa es configurar un cron job del sistema operativo que llame únicamente al endpoint de Scheduler:
*/5 * * * * curl -s https://tusitio.com/cron/scheduler/CRON_KEY > /dev/null
Campos de fecha en el formulario de edición
Cuando Scheduler está habilitado, el formulario de edición del nodo muestra dos campos adicionales: uno para la fecha de publicación y otro para la fecha de despublicación. Estos campos aceptan fecha y hora, con selector de zona horaria si tu sitio maneja varias.
Un detalle práctico que conviene ajustar: configura Scheduler para que muestre los campos de fecha con el widget de calendario nativo de Drupal o con un datepicker de jQuery, según la preferencia del equipo. Esta opción se controla desde los ajustes del formulario del tipo de contenido (Manage Form Display).
Buenas prácticas para equipos editoriales
Documentar el flujo de trabajo
De poco sirve un workflow bien configurado si el equipo desconoce cómo funciona. Redacta una guía interna breve que explique qué hace cada estado, quién es responsable de cada transición y cuándo recurrir a la publicación programada. Drupal permite añadir descripciones a cada estado del workflow; aprovéchalas para que aparezcan como texto de ayuda en el propio formulario.
Usar revisiones para mantener el historial
Content Moderation crea automáticamente una revisión del nodo cada vez que cambia de estado. Verifica que la opción "Create new revision" esté habilitada en el tipo de contenido. Esto permite volver a una versión anterior si algo se publica con un error, sin reescribir el contenido.
Notificaciones automáticas para agilizar el flujo
Con Content Moderation Notifications, configura correos asociados a las transiciones clave. El caso más frecuente: avisar al editor cuando un redactor envía un contenido a revisión, y avisar al redactor cuando el editor devuelve el texto con comentarios. Evita disparar notificaciones para cada transición, porque demasiados correos generan fatiga y acaban ignorándose.
Permisos granulares sobre la programación
Scheduler incluye permisos propios para controlar quién puede programar publicaciones. En muchos equipos, solo los editores o administradores deberían fijar la fecha de publicación, mientras que los redactores se limitan a crear borradores y enviarlos a revisión. Revisa estos permisos en la sección de Scheduler dentro de la pantalla de permisos.
Ejemplo de flujo real con tres roles
Para aterrizar todo lo anterior, este es un flujo típico en un equipo de marketing con tres perfiles:
- El redactor crea un artículo y lo guarda como borrador. Cuando termina, cambia el estado a "Necesita revisión".
- El editor recibe una notificación por correo, accede al panel de Moderation Dashboard y revisa el contenido. Si necesita cambios, lo devuelve al redactor con comentarios en el log de revisión. Si está correcto, lo aprueba.
- El responsable de publicación establece la fecha y hora de publicación con Scheduler. Cuando llega el momento, cron ejecuta la transición de "Aprobado" a "Publicado" de forma automática.
Este modelo escala bien. Si el equipo crece, basta con asignar los roles adecuados a los nuevos usuarios sin tocar la configuración del workflow.
Cómo adaptar el flujo a proyectos con requisitos específicos
Algunos proyectos requieren aprobaciones legales antes de publicar, revisiones de SEO o validación por parte de varios departamentos. Drupal permite crear estados adicionales para cada punto de control (por ejemplo, "Pendiente de revisión legal") y atar transiciones a roles específicos.
Si la complejidad crece mucho, considera usar el módulo ECA (Event-Condition-Action) para automatizar lógica adicional: mover un contenido al siguiente estado cuando se cumplan ciertas condiciones, crear tareas en sistemas externos o generar registros de auditoría.
Para proyectos donde la publicación programada requiere precisión al minuto y el volumen es alto, evalúa si tu infraestructura de cron soporta la carga. En sitios con cientos de nodos programados diariamente, ejecutar cron cada minuto con Drush (drush cron) desde el servidor resulta más fiable que depender del cron de Drupal basado en peticiones HTTP.
Cuándo conviene apoyarse en perfiles especializados
Configurar un workflow básico en Drupal está al alcance de cualquier equipo con conocimientos medios de administración del CMS. La cosa cambia cuando el flujo implica integraciones con herramientas externas, lógica condicional compleja o personalización profunda de permisos y estados; ahí, contar con experiencia en desarrollo Drupal ahorra semanas de prueba y error.
Si necesitas diseñar un flujo editorial a medida o integrar Scheduler con sistemas de planificación de contenidos más amplios, escríbenos y revisamos tu caso.