getResources вывод документов за сегодняшнее число
Добрый день.
Нужно вывести через getResources документы, в котором через TV параметр задана определённая дата. Примерно как тут, только нужно именно за текущую дату, а не за прошлые от текущей или будущие от текущей.
Мой сниппет today выглядит так:
А вот в tv date данные лежат вместе со временем, по этому они и не равны.
Но, даже если генерировать today с часами и минутами, то они всё равно не совпадают. Как быть?
Нужно вывести через getResources документы, в котором через TV параметр задана определённая дата. Примерно как тут, только нужно именно за текущую дату, а не за прошлые от текущей или будущие от текущей.
Мой сниппет today выглядит так:
<?php
return date('Y-m-d');
т.е. он выводит чистую дату, без времени.А вот в tv date данные лежат вместе со временем, по этому они и не равны.
Но, даже если генерировать today с часами и минутами, то они всё равно не совпадают. Как быть?
Комментарии: 16
Распарсить данные из tv date, чтобы осталось только Y-m-d
Ок, я могу через substr забрать первые 10 символов из tv date, но как правильно всё это совместить?..
&where=`{"[[*TV_DATE]]:=":"[[!today]]"}`
Примерно, вот так.
Вот тебе сниппет getTodayIds, который присоединяет таблицу с ТВ и выбирает по ней подходящие id.
Нужно указать id ТВ с датой
Вызываем в getPage:
Нужно указать id ТВ с датой
<?php
$tvid = 1; // id ТВ с датой
$date = date('Y-m-d'); // Сегодня
$q = $modx->newQuery('modResource');
$q->leftJoin('modTemplateVarResource', 'TV', 'modResource.id = TV.contentid AND TV.tmplvarid = '.$tvid);
$q->select('modResource.id');
$q->where('DATE(TV.value) = "'.$date.'"');
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
return implode(',', $ids);
}
Вызываем в getPage:
[[!getPage?
&element=`getResources`
&resources=`[[!getTodayIds]]`
]]
Как вариант еще можно:
$q->where(DAY(TV.value) = DAY(CURDATE()));
По задаче нужно сегодня, а не за один день месяца по всем годам и месяцам.
Верно, немного сам додумал
Василий, спасибо, но не работает.
Просто выводит все документы из подпапки. Понятно, что getPage установлен, id TV поменял на нужный, к вызову добавлял нужные опции. Результат — просто все документы.
Просто выводит все документы из подпапки. Понятно, что getPage установлен, id TV поменял на нужный, к вызову добавлял нужные опции. Результат — просто все документы.
Проблема в том, что когда ресурсов с требуемой датой нет, параметр resources будет содержать пустую строку и соотв. будут выбираться все ресурсы. Один из вариантов решения — можно указать parents=`-1` в вызове getPage.
Андрей, спасибо!
Теперь работает )
Остаётся вопрос — как можно увзяать это всё с eventsCalendar2?
Теперь работает )
Остаётся вопрос — как можно увзяать это всё с eventsCalendar2?
Почитай документацию — он и так выбирает даты из ТВ.
Нужно всего-лишь указать его имя в параметре &dateSource=`` и контейнеры для выборки в &parents=``.
Нужно всего-лишь указать его имя в параметре &dateSource=`` и контейнеры для выборки в &parents=``.
Спасибо, помогло.
Но я имел ввиду несколько другое: есть возможность что бы не только по хуверу на дату выводился список, но и по клику на дате формировалась новая страница с нужными ресурсами?
И &lang больше не поддерживается. Как можно тогда переключить язык? Редактированием шаблонов?
Но я имел ввиду несколько другое: есть возможность что бы не только по хуверу на дату выводился список, но и по клику на дате формировалась новая страница с нужными ресурсами?
И &lang больше не поддерживается. Как можно тогда переключить язык? Редактированием шаблонов?
Формирование страницы с записями не входит в задачи календаря событий.
Язык календаря зависит от языка контекста, в котором его вызывают.
Язык календаря зависит от языка контекста, в котором его вызывают.
Ок, понятно.
Но всё равно спасибо большое за помощь! )
Но всё равно спасибо большое за помощь! )
В комментах уже ответили, как решить проблему, только зачем дату пихать в TV, если в таблице с ресурсами хватает полей для дат? Опишите ваш кейс (частный случай), пожалуйста.
Кейс простой: необходимо создать расписание мероприятий.
Что делаю. Создаю документ с очередным событием, через TV устанавливаю дату, когда оно должно состоятся. Ну и через getResources вывожу все события за сегодня на страницу текущих мероприятий.
Вот такой кейс. Да, было бы неплохо это всё связать с eventsCalendar2, что бы по клику на дате выводился список мероприятий за выбранную дату.
Что делаю. Создаю документ с очередным событием, через TV устанавливаю дату, когда оно должно состоятся. Ну и через getResources вывожу все события за сегодня на страницу текущих мероприятий.
Вот такой кейс. Да, было бы неплохо это всё связать с eventsCalendar2, что бы по клику на дате выводился список мероприятий за выбранную дату.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.