Smart Date

Proporciona un tipo de campo de rango de fechas mejorado con una interfaz de administración inteligente, soporte para eventos de todo el día, opciones de formato sofisticadas y almacenamiento basado en timestamps para un rendimiento óptimo.

smart_date
33,992 sites
211
drupal.org

Install

Drupal 11, 10, 9 v4.2.4
composer require 'drupal/smart_date:^4.2'

Overview

Smart Date es un módulo completo de Drupal que mejora la funcionalidad de datetime del core con un enfoque más amigable para el usuario. Proporciona un tipo de campo de rango de fechas que almacena las horas de inicio y fin como timestamps, permitiendo un excelente rendimiento al filtrar u ordenar.

El módulo introduce el concepto de duración en la interfaz de administración, permitiendo que los campos tengan una duración predeterminada (por ejemplo, 1 hora) donde la hora de finalización se completa automáticamente basándose en el inicio. Esto crea una experiencia de entrada de datos de rango de tiempo/eventos intuitiva similar a las aplicaciones de calendario con las que los editores están familiarizados.

Smart Date también proporciona opciones de formato enriquecidas a través de una nueva entidad de configuración llamada "Smart Date Format". Esto permite a los constructores de sitios controlar cómo se muestran los rangos de fechas a un nivel muy granular, incluyendo opciones para mostrar fechas de forma compacta (por ejemplo, mostrando la fecha solo una vez cuando el inicio y el fin son el mismo día), personalizar separadores y manejar eventos de todo el día con etiquetas configurables.

Un submódulo opcional (Smart Date Recurring) extiende la funcionalidad para soportar eventos recurrentes usando especificaciones RRULE de iCalendar, con una interfaz completa para gestionar instancias individuales.

Features

  • Tipo de campo de rango de fechas inteligente que almacena horas de inicio/fin como timestamps para máximo rendimiento
  • Interfaz de administración basada en duración con auto-completado de horas de fin basado en duraciones predeterminadas configurables
  • Soporte para eventos de todo el día con toggle de un clic, similar a las aplicaciones de calendario
  • Opciones de formato sofisticadas a través de entidades de configuración Smart Date Format
  • Visualización inteligente de rangos de fechas que evita salidas redundantes (por ejemplo, fecha única mostrada cuando inicio/fin son el mismo día)
  • Reducción de AM/PM siguiendo las recomendaciones de la guía de estilo de Associated Press
  • Múltiples opciones de widget: Clásico, Rango en línea, Rango solo de fecha, En línea con zona horaria y Lista de selección
  • Múltiples opciones de formateador: Predeterminado, Plano (ISO 8601), Personalizado y Basado en duración
  • Integración con Views con filtros de fecha mejorados que soportan granularidad y operadores de rango de fechas
  • Integración de Token para campos Smart Date
  • Extensión de Twig para formatear fechas en plantillas
  • Soporte para campos daterange del core usando widgets de Smart Date
  • Capacidades de anulación de zona horaria tanto a nivel de campo como de visualización
  • Localización JavaScript para conversión automática de zona horaria en el navegador
  • Comando Drush para migrar campos datetime del core a campos Smart Date
  • Integración con el módulo Feeds para importar valores Smart Date
  • Integración con el módulo Diff para comparar revisiones de campos Smart Date
  • Integración con procesador de Full Calendar View

Use Cases

Gestión de eventos

Usa Smart Date para tipos de contenido de eventos donde necesitas almacenar horas de inicio/fin de eventos con duración. La casilla de verificación de todo el día facilita la creación de eventos de día completo, mientras que el selector de duración acelera la entrada de datos para eventos con duraciones estándar (30 min, 1 hora, 2 horas).

Eventos recurrentes

Habilita el submódulo Smart Date Recurring para crear eventos que se repiten según un horario. Soporte para patrones de recurrencia diaria, semanal, mensual y anual con opciones para terminar después de un número de ocurrencias o en una fecha específica. Las instancias individuales pueden reprogramarse o cancelarse sin afectar toda la serie.

Eventos multi-zona horaria

Usa el widget Rango en línea con zona horaria para permitir a los editores de contenido especificar la zona horaria para cada evento. El formateador puede entonces mostrar horas en la zona horaria almacenada con una opción para también mostrar la hora equivalente en la zona horaria local del usuario.

Filtrado de rango de fechas

Aprovecha el filtro de fecha mejorado de Views para consultas poderosas de rango de fechas. Filtra eventos que contienen una fecha específica, se superponen con un rango de fechas, o comienzan/terminan dentro de un período. Las opciones de granularidad permiten filtrar por año, mes, día, hora, minuto o segundo.

Migración desde campos de fecha del core

Usa el comando Drush incluido para migrar campos datetime o daterange existentes a Smart Date. Esto preserva tus datos existentes mientras ganas acceso al formato mejorado y opciones de widget de Smart Date.

Formato de fecha consistente

Crea configuraciones de formato Smart Date para asegurar una visualización de fechas consistente en tu sitio. Los formatos pueden traducirse para sitios multilingües, y las opciones configurables manejan casos extremos como la reducción de AM/PM y la deduplicación de fechas automáticamente.

Tips

  • Usa el formato 'Compacto' para visualizaciones con espacio restringido como avances o listas
  • Habilita la localización JavaScript para mostrar automáticamente las horas en la zona horaria local del visitante
  • Cuando migres desde campos de fecha del core, ejecuta el comando Drush en un entorno de staging primero para verificar la migración
  • Configura los incrementos de duración para que coincidan con las duraciones comunes de tus eventos para acelerar la entrada de contenido
  • Usa la opción 'Reducir duplicación de salida' para seguir las recomendaciones de la guía de estilo AP para una visualización de rango de fechas más limpia
  • Para eventos recurrentes por hora o por minuto, el formateador Daily Range proporciona salida optimizada agrupando instancias por día

Technical Details

Admin Pages 3
Formatos de Smart date /admin/config/regional/smart-date

Gestionar entidades de configuración de formato Smart Date. Ver, agregar, editar y eliminar configuraciones de formato que controlan cómo se muestran los rangos de fechas en todo el sitio.

Agregar formato Smart date /admin/config/regional/smart-date/add

Crear una nueva entidad de configuración de formato Smart Date con opciones personalizadas de formato de fecha y hora.

Editar formato Smart date /admin/config/regional/smart-date/{smart_date_format}/configure

Modificar una configuración de formato Smart Date existente.

Permissions 1
Administrar formatos de Smart date

Permitir acceso al formulario de administración para configurar formatos de Smart date. Permiso de acceso restringido.

Hooks 1
hook_smart_date_format_alter

Permite a los módulos alterar el formato de Smart Date antes de la salida.

Drush Commands 1
drush smart_date:migrate

Migrar campos datetime/daterange del core a campos Smart Date. Copia datos de campos fuente a un campo destino Smart Date.

Troubleshooting 5
Las fechas recurrentes no aparecen

Asegúrate de que el campo Smart Date esté configurado con cardinalidad ilimitada. Los valores recurrentes solo pueden usarse en campos que permiten valores ilimitados. Verifica que la opción 'Permitir valores de fecha recurrentes' esté habilitada en la configuración del campo.

Los eventos de todo el día muestran la fecha incorrecta

Los eventos de todo el día se almacenan con una zona horaria específica. Si los eventos aparecen en la fecha incorrecta, verifica que la zona horaria se esté almacenando correctamente. El widget almacena la zona horaria del sitio para eventos de todo el día para asegurar una visualización consistente.

Las opciones de duración no aparecen

Verifica que los incrementos de duración estén configurados correctamente en los ajustes de valor predeterminado del campo. El formato debe ser un valor por línea, con etiquetas opcionales separadas por un carácter de barra vertical (por ejemplo, '60|1 hora'). Incluye 'custom' para permitir entrada de hora de fin arbitraria.

El filtro de fecha no funciona como se esperaba

El filtro de vistas de Smart Date incluye opciones de granularidad. Verifica que la granularidad esté configurada apropiadamente para tu caso de uso. Para comparaciones solo de fecha, usa granularidad 'Día' en lugar de 'Segundo'.

Reglas de recurrencia huérfanas causando errores

Usa el comando Drush 'drush smart_date_recur:prune-invalid-rules' para eliminar reglas de recurrencia inválidas o huérfanas de la base de datos.

Security Notes 2
  • El permiso 'administer smart date formats' está marcado como acceso restringido y solo debe otorgarse a administradores de confianza
  • Los permisos de Smart Date Recurring (hacer fechas inteligentes recurrentes, reprogramar instancias, cancelar instancias) deben asignarse cuidadosamente según los flujos de trabajo editoriales