Scheduler

Scheduler ofrece a los editores de sitios web la capacidad de programar contenido para ser publicado y despublicado en fechas y horas específicas en el futuro.

scheduler
101,964 sites
180
drupal.org

Install

Drupal 11, 10, 9, 8 v8.x-1.6
composer require 'drupal/scheduler:8.x-1.6'

Overview

Scheduler es un módulo potente que proporciona publicación y despublicación automática de entidades en fechas y horas futuras especificadas. Soporta múltiples tipos de entidad a través de una arquitectura de plugins flexible, incluyendo contenido Node, entidades Media, Commerce Products y Taxonomy Terms.

El módulo proporciona hooks y eventos para que módulos de terceros interactúen con el proceso de programación durante la edición de contenido y durante las operaciones de publicación y despublicación basadas en cron. Scheduler se integra perfectamente con el sistema cron de Drupal, pero también proporciona una opción de cron ligera para un control de programación más granular sin ejecutar el cron completo de Drupal.

Scheduler soporta contenido multilingüe con fechas de programación por traducción, creación de revisiones tanto para acciones de publicación como de despublicación, y manejo flexible de fechas pasadas incluyendo publicación inmediata o procesamiento programado en la siguiente ejecución de cron.

Features

  • Programar contenido para publicación automática en una fecha y hora futura especificada
  • Programar contenido para despublicación automática en una fecha y hora futura especificada
  • Soporte para entidades Node, Media, Commerce Product y Taxonomy Term a través de arquitectura de plugins
  • Funcionalidad de cron ligera para programación más frecuente sin ejecutar el cron completo de Drupal
  • Configuración por tipo de entidad con control granular sobre opciones de publicación y despublicación
  • Opción para crear nuevas revisiones al publicar o despublicar contenido programado
  • Manejo flexible de fechas pasadas - mostrar error, publicación inmediata o programar para el próximo cron
  • Cambiar la hora de creación de la entidad para que coincida con la hora de publicación programada
  • Mostrar campos de programación como pestañas verticales o fieldset separado
  • Entrada configurable de solo fecha con configuración de hora predeterminada
  • Opción para ocultar segundos para una interfaz de entrada de hora más limpia
  • Tokens para fechas publish_on y unpublish_on
  • Encabezado X-Robots-Tag compatible con SEO para fechas de despublicación programadas
  • Integración con Devel Generate para contenido de prueba con fechas de programación
  • Soporte de migración para datos de Scheduler de Drupal 7
  • Soporte multilingüe con programación por traducción

Use Cases

Comunicados de prensa con restricción temporal

Programa comunicados de prensa para publicarse en una fecha y hora específica cuando se levante un embargo. El contenido puede prepararse con anticipación y se publicará automáticamente en el momento exacto especificado sin intervención manual.

Promociones por tiempo limitado

Configura contenido promocional como anuncios de ventas u ofertas especiales con fechas de publicación y despublicación. La promoción aparece automáticamente cuando comienza y desaparece cuando termina.

Calendarios de contenido

Los equipos de marketing pueden preparar contenido con semanas de anticipación con fechas de publicación programadas, permitiendo una mejor planificación y calendarios de publicación consistentes sin requerir que alguien publique manualmente cada pieza.

Lanzamientos de contenido globales

Programa contenido para publicarse a medianoche en una zona horaria específica para lanzamientos globales coordinados, asegurando que el contenido se publique en el momento local previsto para la audiencia objetivo.

Contenido estacional

Publica y despublica automáticamente contenido estacional o relacionado con festividades. El contenido navideño puede programarse para aparecer el 1 de diciembre y desaparecer el 2 de enero sin gestión manual.

Ventas relámpago de Commerce

Programa productos de Commerce para publicarse durante ventas relámpago por tiempo limitado. Los productos pueden volverse visibles automáticamente al inicio de la venta y ocultarse cuando la venta termine.

Flujo de trabajo con Rules

Combina con el módulo Rules para crear flujos de trabajo complejos. Por ejemplo, enviar correos de notificación cuando se programa contenido, o agregar etiquetas automáticamente al contenido programado.

Coordinación de contenido multilingüe

Programa diferentes traducciones de idiomas para publicarse en diferentes momentos, permitiendo lanzamientos regionales escalonados o lanzamientos globales simultáneos coordinados.

Tips

  • Usa el cron ligero para verificaciones de programación más frecuentes sin la sobrecarga del cron completo de Drupal. Configura una entrada de crontab separada para llamar a /scheduler/cron/{access-key}.
  • El informe de estado del sistema en /admin/reports/status incluye una sección Scheduler Timecheck que muestra la hora del servidor, la hora del sitio y la hora del usuario para depurar problemas de zona horaria.
  • Al usar Content Moderation, instala el módulo Scheduler Content Moderation Integration para el manejo adecuado de estados del flujo de trabajo.
  • Habilita el registro durante la configuración inicial para verificar que la programación funciona correctamente, luego deshabilítalo para reducir las entradas en el log de la base de datos.
  • Los tokens [node:scheduler-publish] y [node:scheduler-unpublish] pueden usarse en patrones de pathauto para incluir fechas de programación en las URLs.
  • El encabezado X-Robots-Tag se agrega automáticamente para contenido con fechas de despublicación, ayudando a los motores de búsqueda a saber cuándo el contenido dejará de estar disponible.
  • Para pruebas, usa Devel Generate con la integración de Scheduler para crear contenido con fechas de programación aleatorias.

Technical Details

Admin Pages 3
Configuración de Scheduler /admin/config/content/scheduler

Configura los ajustes globales para la publicación y despublicación programada que se aplican a todos los tipos de entidad. Esta página proporciona enlaces rápidos para configurar tipos de contenido, tipos de medios, tipos de productos y vocabularios individuales.

Cron ligero /admin/config/content/scheduler/cron

Configura y prueba la funcionalidad de cron ligero para ejecutar Scheduler independientemente del cron completo de Drupal. Útil para sitios que necesitan verificaciones de programación más frecuentes.

Configuración de Scheduler para tipo de contenido /admin/structure/types/manage/{content_type}

Configuración por tipo de contenido para opciones de programación. Accede mediante Estructura > Tipos de contenido > Editar para cada tipo.

Permissions 9
Administrar Scheduler

Configurar los ajustes de Scheduler, incluyendo horarios predeterminados, cron ligero y opciones globales. Solo debe otorgarse a roles de administrador de confianza.

Programar publicación y despublicación de Content

Permite a los usuarios establecer fechas de publicación y despublicación para contenido de tipo Node al editar tipos de contenido habilitados para Scheduler.

Ver Content programado

Permite a los usuarios ver la lista completa de todo el contenido programado por cualquier autor. Los usuarios siempre pueden ver su propio contenido programado en su página de usuario.

Programar publicación y despublicación de Media

Permite a los usuarios establecer fechas de publicación y despublicación para entidades Media al editar tipos de Media habilitados para Scheduler.

Ver Media programado

Permite a los usuarios ver la lista completa de todos los Media programados por cualquier autor.

Programar publicación y despublicación de Commerce Products

Permite a los usuarios establecer fechas de publicación y despublicación para Commerce Products al editar tipos de producto habilitados para Scheduler.

Ver Commerce Products programados

Permite a los usuarios ver la lista completa de todos los Commerce Products programados por cualquier autor.

Programar publicación y despublicación de Taxonomy Terms

Permite a los usuarios establecer fechas de publicación y despublicación para Taxonomy Terms al editar vocabularios habilitados para Scheduler.

Ver Taxonomy Terms programados

Permite a los usuarios ver la lista completa de todos los Taxonomy Terms programados por cualquier autor.

Hooks 21
hook_scheduler_list

Añade IDs de entidades a la lista que se procesa durante cron. Permite a los módulos agregar entidades para publicación o despublicación programada.

hook_scheduler_TYPE_list

Versión específica por tipo de entidad de hook_scheduler_list. Se invoca solo para el tipo de entidad especificado.

hook_scheduler_list_alter

Manipula la lista de IDs de entidades que se procesan durante cron. Puede agregar o eliminar IDs de la lista.

hook_scheduler_TYPE_list_alter

Versión específica por tipo de entidad de hook_scheduler_list_alter.

hook_scheduler_publishing_allowed

Deniega la publicación de una entidad. Devuelve FALSE para prevenir la publicación. La entidad se reintentará en ejecuciones posteriores de cron.

hook_scheduler_TYPE_publishing_allowed

Versión específica por tipo de entidad de hook_scheduler_publishing_allowed.

hook_scheduler_unpublishing_allowed

Deniega la despublicación de una entidad. Devuelve FALSE para prevenir la despublicación.

hook_scheduler_TYPE_unpublishing_allowed

Versión específica por tipo de entidad de hook_scheduler_unpublishing_allowed.

hook_scheduler_hide_publish_date

Oculta el campo Publish On en los formularios de edición de entidades. Devuelve TRUE para ocultar el campo.

hook_scheduler_TYPE_hide_publish_date

Versión específica por tipo de entidad de hook_scheduler_hide_publish_date.

hook_scheduler_hide_unpublish_date

Oculta el campo Unpublish On en los formularios de edición de entidades. Devuelve TRUE para ocultar el campo.

hook_scheduler_TYPE_hide_unpublish_date

Versión específica por tipo de entidad de hook_scheduler_hide_unpublish_date.

hook_scheduler_publish_process

Procesa la acción de publicación para una entidad. Permite lógica de publicación personalizada. Devuelve 1 si se manejó, 0 para procesamiento predeterminado, -1 en caso de error.

hook_scheduler_TYPE_publish_process

Versión específica por tipo de entidad de hook_scheduler_publish_process.

hook_scheduler_unpublish_process

Procesa la acción de despublicación para una entidad. Permite lógica de despublicación personalizada. Devuelve 1 si se manejó, 0 para procesamiento predeterminado, -1 en caso de error.

hook_scheduler_TYPE_unpublish_process

Versión específica por tipo de entidad de hook_scheduler_unpublish_process.

hook_query_scheduler_alter

Altera la consulta de base de datos para seleccionar entidades a procesar. Hook estándar de alteración de consultas de Drupal.

hook_query_scheduler_publish_alter

Altera la consulta para seleccionar entidades a publicar.

hook_query_scheduler_unpublish_alter

Altera la consulta para seleccionar entidades a despublicar.

hook_query_scheduler_TYPE_publish_alter

Alteración de consulta específica por tipo de entidad para publicación.

hook_query_scheduler_TYPE_unpublish_alter

Alteración de consulta específica por tipo de entidad para despublicación.

Drush Commands 3
drush scheduler:cron

Ejecuta el proceso cron ligero de Scheduler. Solo procesa la publicación y despublicación programadas, no el cron completo de Drupal.

drush scheduler:entity-update

Agrega los campos de base de datos de Scheduler (publish_on, unpublish_on) para entidades cubiertas por plugins. Ejecutar después de habilitar módulos que proporcionan nuevos tipos de entidad.

drush scheduler:entity-revert

Elimina los campos de Scheduler y third-party-settings de los tipos de entidad que ya no están soportados por plugins. Usar cuando un plugin se elimina después de haber sido utilizado.

Troubleshooting 7
El contenido programado no se está publicando

Asegúrate de que el cron de Drupal esté ejecutándose. Verifica que el tipo de contenido tenga habilitada la publicación programada. Verifica que el usuario tenga el permiso 'schedule publishing of nodes'. Revisa el dblog para mensajes de error de Scheduler.

El cron ligero devuelve 403 Forbidden

Verifica que la clave de acceso en la URL coincida con la clave configurada en /admin/config/content/scheduler/cron. Regenera la clave si es necesario.

Los campos de Scheduler no aparecen en el formulario de edición

Verifica que el tipo de Entity tenga habilitada la programación en su configuración. Verifica que el usuario tenga permisos de programación. Revisa la configuración de Form Display para asegurar que los campos no estén ocultos.

Las fechas pasadas muestran error cuando deberían publicarse inmediatamente

Edita la configuración del tipo de contenido y cambia 'Action for publication dates in the past' de 'Display an error message' a 'Publish immediately after saving'.

El widget del campo muestra la fecha actual como predeterminada

Asegúrate de que el widget del campo esté configurado como 'Timestamp (no default)' en lugar del widget 'Datetime Timestamp' del core. Esto puede configurarse en los ajustes de Form Display.

Las fechas programadas no aparecen en las plantillas del Theme

Scheduler proporciona las variables $publish_on y $unpublish_on en preprocess. Para plantillas de Node y Media, estas están disponibles automáticamente. Para otros tipos de Entity, las variables pueden necesitar accederse de manera diferente.

Las traducciones no se programan independientemente

Asegúrate de que los campos publish_on y unpublish_on tengan la misma configuración de traducción que el campo status. Revisa la configuración de idioma de contenido en /admin/config/regional/content-language.

Security Notes 4
  • El permiso 'administer scheduler' permite cambiar configuraciones globales y solo debe otorgarse a administradores de confianza.
  • La clave de acceso del cron ligero proporciona seguridad básica pero debe mantenerse confidencial. Regénérala si se ve comprometida.
  • Los usuarios con permisos de programación pueden controlar efectivamente cuándo el contenido se vuelve visible, lo cual puede tener implicaciones de gobernanza de contenido.
  • El contenido programado se guarda como no publicado hasta la fecha de publicación, por lo que se aplican los controles de acceso de contenido estándar.