En sitios web con gran volumen de contenido, programar la publicación y expiración de artículos es esencial para mantener la información actualizada y optimizar el SEO. El módulo Scheduler permite automatizar estas tareas sin necesidad de intervención manual.
Requisitos
- Drupal 10 o 11 instalado.
- Acceso SSH al servidor.
- Composer y Drush disponibles.
- Permisos de administrador para instalar módulos.
Instalación con Composer y Drush
- Ejecuta: composer require drupal/scheduler
- Activa el módulo: drush en scheduler
Con estos comandos el módulo queda disponible en el sitio.
Configuración paso a paso
- Accede a Extender → Scheduler y habilita los tipos de contenido que deseas programar.
- En Estructura → Tipos de contenido → [Tu tipo] → Programación marca Habilitar programación y define los campos de fecha de publicación y expiración.
- Configura la zona horaria en Configuración → Región e idioma → Fecha y hora para evitar desfases.
- Configura si quieres crear revisiones al publicar un nodo con Scheduler.
Ejemplo práctico
Supongamos que deseas publicar una oferta de descuento el 1 de septiembre y que expire el 15 de septiembre.
- Crea un nuevo nodo del tipo Artículo.
- En la sección Scheduler options, establece la fecha de publicación a 01-09-2026 12:30:00 y la fecha de expiración a 10-09-2026 12:30:00.
- Guarda el nodo. Scheduler se encargará de publicar y despublicar automáticamente según las fechas.
Scheduler en código
No se requiere código adicional, pero si deseas personalizar la lógica, puedes usar hooks:
- Para ejecutar acciones al publicar:
hook_scheduler_publish()- Para ejecutar acciones al despublicar.
hook_scheduler_unpublish()Ejemplo de hook para enviar un email al publicar:
<?php
use Drupal\node\NodeInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
function mymodule_scheduler_publish(NodeInterface $node) {
$logger = \Drupal::logger('mymodule_scheduler');
$logger->notice('El nodo "@title" (ID: @nid) ha sido publicado automáticamente por Scheduler.', [
'@title' => $node->getTitle(),
'@nid' => $node->id(),
]);
// Ejemplo: enviar email al autor.
$author = $node->getOwner();
if ($author) {
$mail_manager = \Drupal::service('plugin.manager.mail');
$mail_manager->mail(
'mymodule',
'node_published',
$author->getEmail(),
'es',
[
'node' => $node,
'message' => 'Tu contenido "' . $node->getTitle() . '" acaba de ser publicado automáticamente.',
]
);
}
}Problemas habituales y soluciones
- El contenido no se publica automáticamente: verifica que el cron esté ejecutándose regularmente. Configura cron en Configuración → Sistema → Cron o usa un cron externo.
- Desfase de zona horaria: asegúrate de que la zona horaria del sitio coincida con la del servidor.
- Conflicto con módulos de revisión: desactiva temporalmente módulos que alteren el estado del nodo durante el cron para identificar el conflicto.
Conclusión
Scheduler es una herramienta ligera y poderosa para gestionar la publicación programada en Drupal 11, mejorando la eficiencia editorial y el posicionamiento SEO al garantizar que el contenido esté activo en los momentos óptimos.