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
Install
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
/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.
/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.
/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
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
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.
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.
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.
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'.
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.
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.
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.