Вывести три ближайших мероприятия от текущей даты!

Приветствую сообщество!

В общем задача вроде бы не очень сложная.

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>
Andrey
25 февраля 2019, 15:48
modx.pro
2
1 174
0

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

Александр Мельник
25 февраля 2019, 19:05
+1
в 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 и нужное направление сортировки, вы получите искомое
    Andrey
    26 февраля 2019, 10:58
    0
    Спасибо тебе человек добрый!

    На самом деле я делал такой вызов, но делал его немного не правильно, т.к. дубина…
    В общем мысль о том, что вызов можно было сохранить в переменную и запихнуть его при проверке в сниппет, меня очень выручила и я увидел еще пару ошибок!
    Итого:
    {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