Как прикрутить календарик к списку событий?

Главные вкладки

Аватар пользователя VasyOK VasyOK 16 октября 2019 в 1:49

Есть вьюха, выводящая события.
Событие имеет дату начала и дату конца.
Как сделать календарик, по клику на день которого можно увидеть события?

Пока что сделал так (через BEF), но это далеко от идеала: Календарик появляется только когда на поле кликнешь, 2 поля вместо одного. Как облагородить?

Комментарии

Аватар пользователя ivnish ivnish 16 октября 2019 в 9:29

1. Нужно сначала сделать вьюху без календаря, чтобы при вводе даты у тебя материалы фильтровались

2. А потом уже с помощью jquery можно любой календарь прикрутить для более удобного выбора даты

Аватар пользователя VasyOK VasyOK 16 октября 2019 в 11:10

1. Контекстный фильтр по дате как сделать? Для данной задачи D8.
2. Календарь который учитывает дату из 2-х полей (начало и конец) как сделать?

Аватар пользователя ivnish ivnish 16 октября 2019 в 12:04

Хотя не, есть календари по диапазону. На сайтах бронирования жилья типа airbnb. Но это всего лишь фронт. Тебе нужно в первую очередь решить вопрос с бэком.

Аватар пользователя VasyOK VasyOK 18 октября 2019 в 12:48

Мне кажется contextual_range_filter - это немного не то.

Попробую разбить задачу на этапы.
1. Сам календарь можно сделать модулем fullcalendar_view он прекрасно понимает даты начала и конца события.
2. Вот только модуль по клику на число отображает события внутри себя. А нужно чтобы по клику происходил переход на страницу даты.
3. Допустим подрубить модуль, чтобы по клику происходил переход на страницу даты, возможным представляется. А как сделать страницу даты? Чтобы так же как страница термина была.

Аватар пользователя marassa marassa 18 октября 2019 в 12:52

VasyOK wrote:
А как сделать страницу даты?

Обычная вьюха, в которой дата является либо контекстным, либо раскрытым фильтром. Можно и так, и эдак, даже не знаю как я бы делал. Но в процессе реализации обычно приходит просветление.

Аватар пользователя VasyOK VasyOK 18 октября 2019 в 13:01

если бы поле даты было одно - тогда вижу как применить обычную вьюху.
а у меня 2 поля: начало и конец события.
или другой тип поля использовать с возможностью ввода 2х дат. Такое поле можно накрутить сторонними модулями.

Аватар пользователя marassa marassa 18 октября 2019 в 13:10

В восьмерке есть поле Date Range. Но оно в любом случае во вьюхе видно как два значения.
Во вьюху можно передавать и два параметра (и даже десять). Если нужно одну и ту же дату передать два раза, то можно прямо и передать ее два раза, как два разных параметра. А можно во вьюхе задать два контекстных фильтра, а настроить их так, чтобы они брали одно и то же значение из URLа.

Аватар пользователя VasyOK VasyOK 18 октября 2019 в 13:28

Date Range - не вижу в коробке. date_range_formatter оно?

marassa wrote:
Если нужно одну и ту же дату передать два раза, то можно прямо и передать ее два раза, как два разных параметра. А можно во вьюхе задать два контекстных фильтра, а настроить их так, чтобы они брали одно и то же значение из URLа.

Это как?

Аватар пользователя marassa marassa 18 октября 2019 в 13:38

Модуль называется Datetime Range, а тип поля - Date Range почему-то.
Если нужно сравнивать даты по больше-меньше, то контекстные фильтры не покатят, только раскрытые.
Если достаточно равенства, то просто добавляешь два контекстных фильтра и в Provide default value указываешь один и тот же query parameter.
Если использовать раскрытые, то придется одну и ту же дату передавать дважды, типа
?date_start=XXX&date_end=XXX

Аватар пользователя VasyOK VasyOK 18 октября 2019 в 13:43

"Если нужно сравнивать даты по больше-меньше, то контекстные фильтры не покатят, только раскрытые." Если нужна именно страница даты - то раскрытые разве подойдут?

Аватар пользователя VasyOK VasyOK 18 октября 2019 в 13:51

страница, на которую переходишь и на ней видно - какие в этот день захватываются длительные события. Как сделана - пока не принципиально.

Аватар пользователя marassa marassa 18 октября 2019 в 13:58

Ну так нужная вьюха с двумя раскрытыми фильтрами уже сделана и продемонстрирована в самом первом посте.
Осталось спрятать с помощью css два некрасивых поля и заменить их на красивый календарь, который по клику будет либо перезагружать вьюху с новыми параметрами (?date_start=<дата, кликнутая юзером>&date_end=<дата, кликнутая юзером>), либо тупо заполнять поля скрытого раскрытого фильтра и жать Submit. Второе по идее должно работать даже через AJAX.