Вывести три ближайших мероприятия от текущей даты!
Приветствую сообщество!
В общем задача вроде бы не очень сложная.
1. Есть TV поле «Дата»
2. Необходимо:
2.1 Вывод ближайших мероприятий от текущей даты
2.2 Выводить надо только ближайшие три
В общем задача на самом деле стумпорится на моменте построения запроса, через pdoTools. Я не могу задать условие, чтобы выводились только мероприятия позже текущей даты, т.к. конструкция такая:
Опубликованная статья 2019-01-06 18:00:00 > Текущая дата 2019-02-06 14:00:00 > Опубликованная статья 2019-03-06 18:00:00
Вот собственно надо вывести ту, что выделена жирным и только её!
Заранее спасибо за помощь, надеюсь я расписал более менее понятно!
UPD! Решение найдено!
В общем задача вроде бы не очень сложная.
1. Есть TV поле «Дата»
2. Необходимо:
2.1 Вывод ближайших мероприятий от текущей даты
2.2 Выводить надо только ближайшие три
В общем задача на самом деле стумпорится на моменте построения запроса, через pdoTools. Я не могу задать условие, чтобы выводились только мероприятия позже текущей даты, т.к. конструкция такая:
Опубликованная статья 2019-01-06 18:00:00 > Текущая дата 2019-02-06 14:00:00 > Опубликованная статья 2019-03-06 18:00:00
Вот собственно надо вывести ту, что выделена жирным и только её!
Заранее спасибо за помощь, надеюсь я расписал более менее понятно!
UPD! Решение найдено!
{var $date = 'now' | date_format : '%Y-%m-%d %H:%M'}
{set $events = $_modx->runSnippet('!getTickets', [
'parents' => 11,
'limit' => 3,
'nestedChunkPrefix' => 'tickets_',
'includeTVs' => 'event',
'where' => [
'event:>' => $date,
] | json_encode,
'sortby' => [
'event' => 'ASC',
] | json_encode,
'tvPrefix' => '',
'prepareTVs' => 1,
'processTVs' => 1,
'tpl' => 'item.oneEvent.sidebar.tpl',
])}
{* Мероприятия *}
<div class="events">
{if $events?}
<div class="events__block">
{$events}
</div>
<a href="{11 | url}" class="events__link g-icon g-icon-appointment"><span class="g-link events__link-span"> Смотреть все мероприятия</span></a>
{/if}
</div>
Комментарии: 2
в modx нет сущности с названием мероприятие.
Вы создали ее сами?
Зачем у вас TV дата? Где участвует выбор даты?
Не совсем понимаю, как текущая дата может быть 2019-02-06, но при этом есть статья опубликованная через месяц, вы изобрели машину времени?)
Но думаю стоит посмотреть сюда
docs.modx.pro/komponentyi/pdotools/parser#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-Fenom
Здесь можно узнать как получить в феномную переменную текущую даты.
PHP умеет сравнивать даты, если обе даты в одном формате.
Получите в феномную переменную дату в таком же формате, как она находиться в поле publishedon у любого ресурса.
Далее вот тут можно прочесть как составить условие для выборки в которых участвует сравнение больше меньше
docs.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
И в итоге у вас получиться примерно такое условие
'where'=>['publishedon:>'=>'2018-09-19 15:48:00']
где вместо строки с датой будет стоять переменная с текущей датой
поставив лимит выборки равным 3 и нужное направление сортировки, вы получите искомое
Вы создали ее сами?
Зачем у вас TV дата? Где участвует выбор даты?
Не совсем понимаю, как текущая дата может быть 2019-02-06, но при этом есть статья опубликованная через месяц, вы изобрели машину времени?)
Но думаю стоит посмотреть сюда
docs.modx.pro/komponentyi/pdotools/parser#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-Fenom
Здесь можно узнать как получить в феномную переменную текущую даты.
PHP умеет сравнивать даты, если обе даты в одном формате.
Получите в феномную переменную дату в таком же формате, как она находиться в поле publishedon у любого ресурса.
Далее вот тут можно прочесть как составить условие для выборки в которых участвует сравнение больше меньше
docs.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
И в итоге у вас получиться примерно такое условие
'where'=>['publishedon:>'=>'2018-09-19 15:48:00']
где вместо строки с датой будет стоять переменная с текущей датой
поставив лимит выборки равным 3 и нужное направление сортировки, вы получите искомое
Спасибо тебе человек добрый!
На самом деле я делал такой вызов, но делал его немного не правильно, т.к. дубина…
В общем мысль о том, что вызов можно было сохранить в переменную и запихнуть его при проверке в сниппет, меня очень выручила и я увидел еще пару ошибок!
Итого:
На самом деле я делал такой вызов, но делал его немного не правильно, т.к. дубина…
В общем мысль о том, что вызов можно было сохранить в переменную и запихнуть его при проверке в сниппет, меня очень выручила и я увидел еще пару ошибок!
Итого:
{var $date = 'now' | date_format : '%Y-%m-%d %H:%M'}
{set $events = $_modx->runSnippet('!getTickets', [
'parents' => 11,
'limit' => 3,
'nestedChunkPrefix' => 'tickets_',
'includeTVs' => 'event',
'where' => [
'event:>' => $date,
] | json_encode,
'sortby' => [
'event' => 'ASC',
] | json_encode,
'tvPrefix' => '',
'prepareTVs' => 1,
'processTVs' => 1,
'tpl' => 'item.oneEvent.sidebar.tpl',
])}
{* Мероприятия *}
<div class="events">
{if $events?}
<div class="events__block">
{$events}
</div>
<a href="{11 | url}" class="events__link g-icon g-icon-appointment"><span class="g-link events__link-span"> Смотреть все мероприятия</span></a>
{/if}
</div>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.