es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fechas disponibles para un sitio web local de eventos culturales (Drupal 9)

Sé que no soy el primero ni seré el último en intentar desplegar una guía de eventos con Drupal. Hace unos 10 años ya tenía una muy básica. Ahora, empezando de cero con Drupal 9, me he encontrado con la misma duda que entonces: ¿cuál es el mejor enfoque para gestionar las fechas dentro del tipo de contenido evento?

A) El escenario

Vivo en un estado con 3 ciudades medianas y varios condados. Comenzaré con solo una de las ciudades para evitar (en el principio) problemas de ubicación. También comienzo siendo el único administrador, aunque planeo agregar algunos editores (capaces de agregar eventos) en un futuro cercano. He creado dos tipos de contenido diferentes en Drupal 9: eventos y lugares. Los eventos deben estar asociados a un lugar. Quiero mostrar en una vista todos los eventos disponibles que suceden en una fecha elegida. Esos eventos culturales pueden ser, en relación a las fechas:

  1. Una única fecha: por ejemplo, un concierto que sucede el miércoles 01/12/2021 a las 20:00h.
  2. Diferentes fechas: por ejemplo, una obra de teatro que sucede el viernes 03/12/2021 a las 20:00h + sábado 04/12/2021 a las 18:00h y 20:00h + domingo 05/12/2021 a las 18:00h.
  3. Un período de tiempo (días): por ejemplo, una exposición de arte que está abierta desde el miércoles 01/12/2021 hasta el lunes 31/01/2022. En este caso, no me importa el horario.
  4. Descarto las fechas recurrentes a propósito (por razones técnicas y logísticas, ver conclusión).

B) Algunos módulos relacionados con los campos de fechas

He revisado diferentes módulos, incluido el módulo de fecha y hora básico (Datetime module), por supuesto. Como solo estoy esbozando mi proyecto, preferiría manejarlo con la combinación adecuada de módulos en lugar de agregar código personalizado.

  1. El módulo de fecha y hora básico (Datetime module) muestra el selector de fecha HTML5, que es “bonito” debido al widget de calendario, pero el campo de tiempo muestra una granularidad que no necesito (no necesito segundos ni minutos en un intervalo menor que cuartos de hora: :00, :15, :30 y :45). He pensado que podría usar la opción “solo fecha” de este campo de fecha en ese caso.
  2. El módulo de fecha y hora rango (Datetime Range module) parece hacer que la fecha / hora de finalización sea obligatoria, y no es el caso.
  3. No creo que necesite el módulo de fechas recurrentes (Recurring Dates Field) ya que no lo estoy usando (ver 4).
  4. El módulo de fechas inteligentes (Smart Date module) parece bastante inteligente… pero lo encuentro excesivo para las necesidades de mi proyecto y no estoy seguro de que se adapte a todas y cada una de las combinaciones de fechas de eventos mencionadas anteriormente (1, 2, 3).
  5. Encontré algunos otros módulos relacionados con las fechas: API de incremento de fechas (Date Augmenter API), aunque no estoy seguro de lo que puede mejorar.

C) Primer enfoque

Con todo esto en mente, he creado una idea de lo que podría solucionar los principales problemas:

  1. Fecha de inicio (fecha): un campo de fecha obligatorio (solo fecha) para la fecha de inicio (generalmente la misma que la fecha de finalización).
  2. Hora de inicio (fecha): un campo de fecha opcional (solo hora) para la hora de inicio (aunque debería ser obligatorio para los casos 1 y 2).
  3. Fecha de finalización (fecha): un campo de fecha opcional (solo fecha) para la fecha de finalización (caso 3).

Y

  1. Para eventos con una sola fecha (como un concierto), tendría que agregar la fecha y hora de inicio.
  2. Para eventos que suceden en diferentes fechas y horarios (como obras de teatro, caso 2), tendría que agregar diferentes nodos con el mismo contenido y diferentes fechas. Los valores múltiples no parecen la solución correcta porque no estoy seguro de cómo agrupar dos campos -Fecha de inicio (fecha) y Hora de inicio (fecha)- para que elegir un segundo valor solicite ambos campos de fecha y hora.
  3. Para eventos que suceden durante un período de tiempo (como exposiciones de arte), tendría que agregar una fecha de inicio y una fecha de finalización (sin hora).

Luego, al mostrar “todos los eventos de hoy”, por ejemplo, crearía una vista eligiendo todos los nodos de eventos que comienzan en esa fecha (la fecha de hoy) y aquellos con una fecha de inicio anterior que tenga una fecha de finalización futura (o la fecha de hoy).

Creo que soluciona el problema de alguna manera, pero estoy seguro de que podría hacerse de manera más agradable, más simple (para el editor de eventos), más eficiente. Estaría más que feliz si pudieras contribuir con estudios de casos, experiencias, conocimientos y consejos, así como promover discusión sobre este proyecto, muy común cuando se aborda haciendo uso de Drupal.

Agradezco tu interés en leer esta larga publicación. Que tengas un buen día,
h

Prefiero volver a escribir, por ejemplo, eventos semanales si suceden en lugar de tener eventos inexistentes porque los organizadores decidieron omitir uno o simplemente dejar de producir el evento sin previo aviso.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Administración de Fechas en el Tipo de Contenido de Eventos en Drupal 9

    Como experto en TI especializado en Drupal y sus módulos, se me ha hecho una pregunta común sobre cómo administrar las fechas dentro del tipo de contenido de eventos en Drupal 9. Aquí hay algunos detalles sobre el escenario y algunas soluciones posibles.

    El Escenario

    El objetivo es desplegar una guía de eventos utilizando Drupal 9 en un estado con tres ciudades de tamaño medio y varios condados. El plan es comenzar con una ciudad y un administrador, aunque eventualmente se agregarán más editores. Se han creado dos tipos de contenido para este proyecto: eventos y lugares, y cada evento necesita estar asociado con un lugar. Uno de los requisitos es mostrar todos los eventos disponibles que se estén llevando a cabo en una fecha determinada, y los eventos pueden tener varios escenarios relacionados con la fecha, como:

    1. Una sola fecha, como un concierto que tendrá lugar el miércoles 01/12/2021 a las 20:00h.
    2. Múltiples fechas diferentes, como una obra de teatro que tendrá lugar el viernes 03/12/2021 a las 20:00h + sábado 04/12/2021 a las 18:00h & 20:00h + domingo 05/12/2021 a las 18:00h.
    3. Un período de tiempo (días), como una exposición de arte abierta desde el miércoles 01/12/2021 hasta el lunes 31/01/2022.
    4. Fechas recurrentes, que no se consideran debido a razones técnicas y logísticas.

    Módulos Relacionados con el Campo de Fechas

    Algunos módulos relacionados con el campo de fechas que pueden ayudar mientras se trabaja con el tipo de contenido de eventos en Drupal 9 son:

    • Módulo Datetime (Núcleo): Este módulo muestra el selector de fechas HTML5, que es preferible debido al widget de calendario, pero el campo de tiempo muestra una granularidad que no es necesaria. Por lo tanto, se debe usar la opción de tener solo el campo de fecha en lugar del widget de fecha y hora completo.
    • Módulo Datetime Range: Este módulo hace que la fecha/hora de finalización sea obligatoria, lo cual no es necesario en algunos casos.
    • Módulo de Campo de Fechas Recurrentes: Este módulo se puede descartar ya que la recurrencia de las fechas no se necesita.
    • Módulo Smart Date: Es probable que este módulo sea excesivo para las necesidades del proyecto.
    • API de Date Augmenter: La aplicabilidad de este módulo es incierta en este momento.

    Enfoque

    Basado en el escenario mencionado, un enfoque para administrar las fechas dentro del tipo de contenido de eventos en Drupal 9 es el siguiente:

    • Fecha de inicio (fecha): Un campo obligatorio (solo fecha) para la fecha de inicio (generalmente la misma que la fecha de finalización)
    • Fecha de inicio (tiempo): Un campo opcional (solo hora) para la fecha de inicio (si es necesario)
    • Fecha de finalización (fecha): Un campo opcional (solo fecha) para la fecha de finalización (como se requiere)

    Los diferentes escenarios se pueden abordar de la siguiente manera:

    1. Para eventos con una sola fecha, como conciertos, es necesario agregar la fecha y hora de inicio.
    2. Para eventos que tienen lugar en diferentes fechas y horarios, como obras de teatro, se pueden crear nodos separados con el mismo contenido pero fechas diferentes. Los valores múltiples no son la solución correcta porque no les pedirán a los usuarios que ingresen un valor si el campo de fecha está en blanco.
    3. Para eventos que tienen lugar durante un período de tiempo, como en el caso de exposiciones de arte, se deben agregar una fecha de inicio y una fecha de finalización sin tiempo asociado.

    Luego, cuando se muestra “todos los eventos de hoy”, se necesita crear una vista que enumere todos los nodos de eventos que comiencen en esa fecha (la fecha de hoy) y aquellos con una fecha de inicio que sea más antigua pero con una fecha de finalización futura (o la fecha de hoy).

    Sin embargo, esta solución se puede mejorar y agradecería cualquier estudio de casos, experiencia, conocimiento y consejos para hacer que la administración del tipo de contenido de eventos en Drupal sea más hermosa, más simple (para los editores de eventos) y eficiente. Este tipo de proyecto es común al usar Drupal, así que hablemos más de él.

Comments are closed.