скрыть блок после даты публикации документа

Modx Revolution. Есть лента событий с календарем eventsCalendar2, каждое событие — отдельный документ, дата его в календаре — дата публикации publishedon. У этого события есть форма заявки (FormIt).

Как сделать так, чтобы форма заявки скрывалась на странице вывода события при наступлении даты публикации? Ну и вместо неё вывести другой блок с текстом типа «Прием заявок окончен».

Подозреваю, что можно это сделать на js — я хоть и не пишу на нем, сообразить смогу и найти примеры подобного поведения, но как мне обратиться к дате публикации документа modx?
Andrey
20 февраля 2015, 14:39
modx.pro
1 616
0

Комментарии: 4

Максим Кузнецов
20 февраля 2015, 18:06
+1
js не позволит скрыть его совсем.

Вам потребуется внешнее условие, для простоты, допустим, оно может быть задано с помощью фильтров + минимальной логики.

Допустим, создаем сниппет today со следующим кодом:

return date("U");
— который выведет текущую дату в unix-формате. А дальше, при помощи фильтров сравниваем приведенную к этому же формату дату события и, если она меньше today-даты — выводить «прием заявок окончен», иначе — форму заявки.
    Andrey
    20 февраля 2015, 18:24
    0
    Я новичок ещё в Revo, спасибо за указание на фильтры.

    Получается примерно так:
    [[+publishdone:gte=`значение сегодняшней даты из сниппета today`:then=`
         // код формы
    `:else=`
         // прием заявок окончен
    `]]
    только вот как вызвать сниппет today в фильтрах?
      Максим Кузнецов
      20 февраля 2015, 18:41
      1
      +1
      так и вызываете — [[!today]]. В крайнем случае, если вдруг это не сработало, в сниппете today можно заменить возвращаемое значение, на выставление плейсхолдера:

      today
      $modx->setPlaceholder('todayPlaceholder',date("U"));

      и вызывать в шаблоне:
      [[!today]] //просто выполнит сниппет, ничего не возвращая
      
      [[+todayPlaceholder]] //в нужном месте - выведет только значение, без обработки

      + я так понимаю, т.к. у вас страница с вызовом — это «событие» календаря, то необходимо смотреть tv-параметр, по которому определяется дата «проведения» события, а не его создания в админке. И тогда вам или нужно преобразовать дату из tv в unix-формат (фильтром :strtotime) или настроить формат «вывода» в настройка тв-параметра.
        Andrey
        20 февраля 2015, 19:03
        0
        не, у меня как раз дата события и есть дата публикации в админке, так что тут просто использую publishdone и всё.

        Спасибо вам большое за помощь!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4