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
Install
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
/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.
/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.
/admin/config/regional/smart-date/{smart_date_format}/configure
Modificar una configuración de formato Smart Date existente.
Permissions 1
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
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 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.
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 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'.
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