скрыть блок после даты публикации документа
Modx Revolution. Есть лента событий с календарем eventsCalendar2, каждое событие — отдельный документ, дата его в календаре — дата публикации publishedon. У этого события есть форма заявки (FormIt).
Как сделать так, чтобы форма заявки скрывалась на странице вывода события при наступлении даты публикации? Ну и вместо неё вывести другой блок с текстом типа «Прием заявок окончен».
Подозреваю, что можно это сделать на js — я хоть и не пишу на нем, сообразить смогу и найти примеры подобного поведения, но как мне обратиться к дате публикации документа modx?
Как сделать так, чтобы форма заявки скрывалась на странице вывода события при наступлении даты публикации? Ну и вместо неё вывести другой блок с текстом типа «Прием заявок окончен».
Подозреваю, что можно это сделать на js — я хоть и не пишу на нем, сообразить смогу и найти примеры подобного поведения, но как мне обратиться к дате публикации документа modx?
Комментарии: 4
js не позволит скрыть его совсем.
Вам потребуется внешнее условие, для простоты, допустим, оно может быть задано с помощью фильтров + минимальной логики.
Допустим, создаем сниппет today со следующим кодом:
Вам потребуется внешнее условие, для простоты, допустим, оно может быть задано с помощью фильтров + минимальной логики.
Допустим, создаем сниппет today со следующим кодом:
return date("U");
— который выведет текущую дату в unix-формате. А дальше, при помощи фильтров сравниваем приведенную к этому же формату дату события и, если она меньше today-даты — выводить «прием заявок окончен», иначе — форму заявки.
Я новичок ещё в Revo, спасибо за указание на фильтры.
Получается примерно так:
Получается примерно так:
[[+publishdone:gte=`значение сегодняшней даты из сниппета today`:then=`
// код формы
`:else=`
// прием заявок окончен
`]]
только вот как вызвать сниппет today в фильтрах?
так и вызываете — [[!today]]. В крайнем случае, если вдруг это не сработало, в сниппете today можно заменить возвращаемое значение, на выставление плейсхолдера:
today
и вызывать в шаблоне:
+ я так понимаю, т.к. у вас страница с вызовом — это «событие» календаря, то необходимо смотреть tv-параметр, по которому определяется дата «проведения» события, а не его создания в админке. И тогда вам или нужно преобразовать дату из tv в unix-формат (фильтром :strtotime) или настроить формат «вывода» в настройка тв-параметра.
today
$modx->setPlaceholder('todayPlaceholder',date("U"));
и вызывать в шаблоне:
[[!today]] //просто выполнит сниппет, ничего не возвращая
[[+todayPlaceholder]] //в нужном месте - выведет только значение, без обработки
+ я так понимаю, т.к. у вас страница с вызовом — это «событие» календаря, то необходимо смотреть tv-параметр, по которому определяется дата «проведения» события, а не его создания в админке. И тогда вам или нужно преобразовать дату из tv в unix-формат (фильтром :strtotime) или настроить формат «вывода» в настройка тв-параметра.
не, у меня как раз дата события и есть дата публикации в админке, так что тут просто использую publishdone и всё.
Спасибо вам большое за помощь!
Спасибо вам большое за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.