【发布时间】:2021-12-01 19:36:45
【问题描述】:
我知道我不是第一个尝试使用 Drupal 部署事件指南的人。大约 10 年前,我自己有一个基本的。现在从头开始使用 Drupal 9,我遇到了同样的疑问:在事件内容类型中管理日期的最佳方法是什么?
A) 场景
我住在一个有 3 个中等城市和几个县的州。我从一个城市开始,以避免(一开始)位置问题。尽管我计划在不久的将来添加一些编辑器(能够添加事件),但我也开始成为唯一的管理员。我在 Drupal 9 中创建了 2 种不同的内容类型:活动和场所。活动必须与一个场所相关联。我想在视图中显示在选定的单个日期发生的所有可用事件。这些文化事件可能与日期相关:
- 单日:例如 2021 年 12 月 12 日星期三 20:00 举行的音乐会
- 不同的日期:例如2021/12/03 周五 20:00h + 2021/12/04 周六 18:00h 和 20:00h + 2021/12/05 周日 18:00h 上演的戏剧
- 一段时间(天):例如和艺术展览从 2021/12/01 星期三到 2022/01/31 星期一开放。在这种情况下,我不在乎时间。
- 我故意放弃重复日期(出于技术和后勤原因,请参阅底线)
B) 一些与日期字段相关的模块
我检查了不同的模块,当然包括核心日期时间模块。因为我只是在草绘我的项目,所以我更喜欢使用适当的模块组合进行管理,而不是添加任何自定义代码。
- 核心 Datetime 模块 显示了 HTML5 日期选择器,由于日历小部件的原因,它“不错”,但时间字段显示我不需要的粒度(不需要秒或分钟)超过一刻钟的间隔::00, :15, :30 & :45)。我想我可以使用这个日期字段的“唯一日期”选项。
- 日期时间范围模块似乎强制结束日期/时间,但事实并非如此
- 我认为我不需要定期日期字段,因为我没有使用它(参见 4)
- 智能日期模块看起来很...很聪明,但我发现它对于我的项目的需求来说有点过头了,我不确定它是否适合所有上述 (1, 2, 3) 事件日期组合
- 我发现了一些其他与日期相关的模块:Date Augmenter API(不确定有什么可以改进的)
C) 第一种方法
考虑到所有这些,我构建了一个我认为可以解决主要问题的草稿:
- 开始日期(日期):必填日期字段(仅限日期)开始日期(通常与结束日期相同)
- 开始日期(时间):一个可选的日期字段(仅限时间),用于开始日期(尽管对于情况 1 和 2 应该是强制性的)
- 结束日期(日期):一个可选的日期字段(仅限日期),用于结束日期(案例 3)
和
- 对于只有一个日期的活动(例如音乐会),我必须添加开始日期和时间
- 对于发生在不同日期和时间的事件(例如戏剧,案例 2),我必须添加具有相同内容和不同日期的不同节点。多个值似乎不是正确的解决方案,因为我不确定如何对 2 个字段进行分组 - 开始日期(日期)和开始日期(时间) - 因此选择第二个值会同时要求日期和时间字段
- 对于一段时间内发生的事件(例如艺术展览),我必须添加开始和结束日期(没有时间)
然后,例如,当显示“今天的所有事件”时,我将创建一个视图,选择从该日期(今天的日期)开始的所有事件节点以及具有未来(或今天)结束的较早开始日期的事件节点日期。
...
我相信它在一定程度上解决了这个问题,但我确信它可以以一种更好、更简单(对于事件编辑器)、有效的方式来完成。如果您能提供任何案例研究、经验、知识和技巧,并促进讨论这种使用 Drupal 的项目,很可能是非常常见的类型,我将非常高兴。
感谢您有兴趣阅读这篇长文。祝你今天过得愉快, h
如果组织者决定跳过一个或干脆在没有事先警告的情况下停止制作活动,我更喜欢重新输入,例如,如果每周活动发生,而不是不存在的活动
【问题讨论】:
-
我想我会尝试使用一个完整的自定义模块来尝试这个场景,该模块提供一个新的实体类型和强制性的日期字段,而没有日期贡献模块。在我看来,这比尝试使用贡献模块解决这个问题并将其压入这个用例更容易。
-
Ty @SchwarzDeveloping 我相信这将是一个准确的解决方案。但恐怕我对 Drupal 的了解还没有那么远。我越长大,我对(一切)编码和 Drupal 的了解就越少。我将尝试在这里坚持最少的编码,如果项目成功发展,我将联系一些专家编码器,利用您的自定义模块和 entityyipe 解决方案重新设计它。再次感谢您的精明解决方案。
标签: date drupal drupal-modules