#date #drupal #drupal-modules
Вопрос:
Я знаю, что я не первый и не буду последним, кто попытается развернуть руководство по событиям с помощью Drupal. У меня самого был базовый примерно 10 лет назад. Начиная с нуля с Drupal 9, я столкнулся с тем же сомнением, что и тогда: каков может быть наилучший подход к управлению датами в рамках типа контента событий?
А) Сценарий
Я живу в штате с 3 средними городами и несколькими округами. Я начинаю только с одного города, чтобы избежать (в начале) проблем с местоположением. Я также начинаю быть единственным администратором, несмотря на то, что в ближайшем будущем планирую добавить несколько редакторов (способных добавлять события). Я создал 2 разных типа контента в Drupal 9: события и места проведения.События действительно должны быть связаны с одним местом. Я хочу показать на экране все доступные события, происходящие в выбранную единственную дату. Эти культурные события могут быть связаны с датами:
- единственная дата: например,концерт состоится в Ср 2021/12/01 в 20:00
- разные даты: например, театральная постановка состоится в пятницу 2021/12/03 в 20:00 Сб 2021/12/04 в 18:00 и 20:00 Вс 2021/12/05 в 18:00
- период времени (дней): например, художественная выставка открыта с Ср 2021/12/01 по Пн 2022/01/31. В данном случае меня не волнует время.
- Я специально отбрасываю повторяющиеся даты (по техническим и логистическим причинам, см. Итог).
Б) Несколько модулей, связанных с полем даты
Я проверил различные модули, в том числе, конечно, основной модуль Datetime. Поскольку я просто набрасываю набросок своего проекта, я бы предпочел использовать правильную комбинацию модулей, а не добавлять какой-либо пользовательский код.
- основной модуль Datetime показывает средство выбора даты HTML5, которое «приятно» из-за виджета календаря, но поле времени показывает детализацию, которая мне не нужна (нет необходимости в секундах или минутах с интервалом меньше четверти часа: :00, :15, :30 amp; :45). Я подумал, что тогда я мог бы использовать опцию «только дата» в этом поле даты.
- Модуль диапазона даты и времени, по-видимому, делает дату/время окончания обязательной, но это не так
- Я не думаю, что мне понадобится поле Повторяющиеся даты, так как я им не пользуюсь (см. 4).
- Модуль Smart Date выглядит довольно… умно, но я нахожу его излишним для нужд моего проекта, и я не уверен, что он подойдет для всех и каждой из вышеупомянутых (1, 2, 3) комбинаций дат событий
- Я нашел несколько других модулей, связанных с датой: API увеличения даты (не уверен, что можно улучшить)
C) Первый подход
Имея все это в виду, я составил проект того, что, как я полагаю, могло бы решить основные проблемы:
- Дата начала (дата): обязательное поле даты (только дата) для даты начала (обычно совпадает с датой окончания)
- Дата (время) начала: необязательное поле даты (только время) для даты начала (несмотря на то, что оно должно быть обязательным для случаев 1 и 2)
- Дата окончания (дата): необязательное поле даты (только дата) для даты окончания (случай 3)
и
- для мероприятий с одной датой (например, концерт) Мне нужно было бы добавить дату и время начала
- для событий, происходящих в разные даты и время (например, театральные постановки, случай 2), мне пришлось бы добавлять разные узлы с одинаковым контентом и разными датами. Несколько значений не кажутся правильным решением, так как я не уверен, как сгруппировать 2 поля-Дата начала (дата) и Дата начала (время), чтобы при выборе второго значения запрашивались поля даты и времени
- для событий, происходящих в течение определенного периода времени (например, художественные выставки) Мне пришлось бы добавить дату начала и окончания (без времени).
Затем, например, при отображении «всех событий на сегодня» я бы создал представление, в котором выбрал бы все узлы событий, начинающиеся с этой даты (сегодняшняя дата), и узлы с более ранней датой начала, имеющие будущую (или сегодняшнюю) дату окончания.
…
Я считаю, что это в какой-то степени решает проблему, но я уверен, что это можно было бы сделать гораздо более приятным, простым (для редактора событий) и эффективным способом. Я был бы более чем счастлив, если бы вы могли поделиться любыми тематическими исследованиями, опытом, знаниями и советами, а также способствовать обсуждению этого, скорее всего, очень распространенного вида проекта, когда речь заходит об использовании Drupal.
Я ценю ваш интерес к прочтению этого длинного поста. Хорошего дня, ч
Я предпочитаю перепечатывать, скажем, еженедельные мероприятия, если они происходят, чем несуществующие, потому что организаторы решили пропустить одно из них или просто прекратить проведение мероприятия без предварительного предупреждения
Комментарии:
1. Я думаю, что я бы попробовал этот сценарий с полным пользовательским модулем, который содержит новый тип сущности и обязательные поля даты без модуля вклада даты. На мой взгляд, это проще, чем пытаться решить эту проблему с помощью модуля вклада и вставить его в этот вариант использования.
2. Ty @SchwarzDeveloping Я уверен, что это было бы точным решением. Но я боюсь, что мои знания о Drupal не заходят так далеко. Чем старше я становлюсь, тем меньше я знаю о (всем) кодировании и Drupal. Я постараюсь придерживаться минимального кодирования здесь, и, в случае успешного развития проекта, я обращусь к какому-нибудь опытному программисту, чтобы он переработал его, используя ваш пользовательский модуль и решение entityyipe. Еще раз большое вам спасибо за ваше разумное решение.
Ответ №1:
Может быть, если вы хотите чего-то простого, без кода (или нескольких), вам придется изменить видение того, чего вы хотите.
Возможно, этого одного типа контента недостаточно для того, чтобы делать такие вещи. Создайте (например, вы можете добавить больше или меньше типов контента) одно представление, несколько представлений, тип контента с длительным представлением. Затем вы можете переопределить (с помощью модуля Pathauto) путь ваших типов содержимого, чтобы выбрать один и тот же путь. Затем вы объединяете все с помощью представлений SearchAPI .
Другое решение (больше кода) — добавить список отображения в свой тип контента. Пример : Одно представление / Несколько представлений / Представление в течение длительного времени. Затем в вашем шаблоне поле даты может быть изменено в определенном формате, в зависимости от выбранной опции. (с некоторыми элементами управления для отображения правильного формата)
С помощью такого рода конфигурации вы можете иметь :
- Дата начала (метка времени): обязательная /множественная мощность
- Дата окончания (метка времени): необязательно /простая мощность