Implementa contenido programado con Scheduler en Drupal 11

portada_scheduler
Solucionex
29
Sep 26

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.

Instalacion

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.
Config. 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.
Opciones de publicación

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.

Drupal 11
Drupal
Scheduler
Site Building