[Решено] Как в pdoPage скрыть прошедшие события?
Добрый вечер.
Прошу подсказать, если это возможно, где я допускаю ошибку в следующей задаче.
Дано:
1. Документы\Мероприятия, у которых есть TV-поле educ_datestart — дата начала события.
2. «Тип вывода» TV-поля — Дата. «Формат даты» — %s
(в документации modx я этого варианта не нашел, но он работает и выводит дату в Unix-формате.)
3. Есть сниппет current_date на вывод текущей даты:
Задача:
При выводе через PdoPage требуется отсеять все прошедшие мероприятия, т.е. где
И сама проблема:
Сортировка не работает, т.е. при указанной выше записи система выводит все события, даже те, что уже прошли.
Если я меняю знак неравенства на <=, то не выводит ничего.
Логи показывают:
Что я упускаю? Почему неравенство не срабатывает?
Если я вывожу значение TV-поля и сниппета на экран, для каждого элемента, то они отображаются верно, в UNIX-формате и с правильным значением.
Проблема решена:
Проблема решена, благодаря вот этому посту — forums.modx.com/thread/92071/pdoresources-and-tvfilters#dis-post-513666
Получается, что мой TV на этапе вывода все-таки не был в unix формате, хотя уже на выходе был в нем
Прошу подсказать, если это возможно, где я допускаю ошибку в следующей задаче.
Дано:
1. Документы\Мероприятия, у которых есть TV-поле educ_datestart — дата начала события.
2. «Тип вывода» TV-поля — Дата. «Формат даты» — %s
(в документации modx я этого варианта не нашел, но он работает и выводит дату в Unix-формате.)
3. Есть сниппет current_date на вывод текущей даты:
if(!isset($ts)) { $ts=time(); } return $ts;
Он выводится также в Unix-формате.Задача:
При выводе через PdoPage требуется отсеять все прошедшие мероприятия, т.е. где
educ_datestart < current_date
Последняя попытка была сделать это через where:&where=`{"educ_datestart:>=":"[[!current_date]]"}`
Само собой поле подключено:&includeTVs=`educ_datestart`
&processTVs=`educ_datestart`
&prepareTVs=`educ_datestart`
И сама проблема:
Сортировка не работает, т.е. при указанной выше записи система выводит все события, даже те, что уже прошли.
Если я меняю знак неравенства на <=, то не выводит ничего.
Логи показывают:
0.0000870: Replaced TV conditions
0.0005779: Processed additional conditions
0.0009310: Added where condition: `TVeduc_datestart`.`value`:>==1566408006, modResource.parent:IN(61,75,76,77,78,79,80,81,82,83,84,85,87,89,91), modResource.published=1, modResource.deleted=0
0.0000060: Replaced TV conditions
SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`alias_visible`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVeduc_datestart`.`value`, '') AS `tv.educ_datestart`, IFNULL(`TVeduc_who`.`value`, '\"\"\n
Ведущий
\n
') AS `tv.educ_who`, IFNULL(`TVeduc_datemeet`.`value`, '') AS `tv.educ_datemeet`, IFNULL(`TVeduc_aktime`.`value`, '') AS `tv.educ_aktime`, IFNULL(`TVeduc_cost`.`value`, '') AS `tv.educ_cost`, IFNULL(`TVeduc_calendar`.`value`, '') AS `tv.educ_calendar`, IFNULL(`TVeduc_notice`.`value`, '') AS `tv.educ_notice`, IFNULL(`TVeduc_status`.`value`, '') AS `tv.educ_status` FROM `cted_site_content` AS `modResource` LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_datestart` ON `TVeduc_datestart`.`contentid` = `modResource`.`id` AND `TVeduc_datestart`.`tmplvarid` = 14 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_who` ON `TVeduc_who`.`contentid` = `modResource`.`id` AND `TVeduc_who`.`tmplvarid` = 15 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_datemeet` ON `TVeduc_datemeet`.`contentid` = `modResource`.`id` AND `TVeduc_datemeet`.`tmplvarid` = 17 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_aktime` ON `TVeduc_aktime`.`contentid` = `modResource`.`id` AND `TVeduc_aktime`.`tmplvarid` = 18 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_cost` ON `TVeduc_cost`.`contentid` = `modResource`.`id` AND `TVeduc_cost`.`tmplvarid` = 19 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_calendar` ON `TVeduc_calendar`.`contentid` = `modResource`.`id` AND `TVeduc_calendar`.`tmplvarid` = 20 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_notice` ON `TVeduc_notice`.`contentid` = `modResource`.`id` AND `TVeduc_notice`.`tmplvarid` = 21 LEFT JOIN `cted_site_tmplvar_contentvalues` `TVeduc_status` ON `TVeduc_status`.`contentid` = `modResource`.`id` AND `TVeduc_status`.`tmplvarid` = 22 WHERE ( `TVeduc_datestart`.`value` >= '1566415616' AND `modResource`.`parent` IN (64,86,88,90,92,93,94,95,97) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY CAST(`TVeduc_datestart`.`value` AS DATETIME) ASC LIMIT 12 "
0.0056250: SQL executed
0.0001819: Total rows: 8
Что я упускаю? Почему неравенство не срабатывает?
Если я вывожу значение TV-поля и сниппета на экран, для каждого элемента, то они отображаются верно, в UNIX-формате и с правильным значением.
Проблема решена:
Проблема решена, благодаря вот этому посту — forums.modx.com/thread/92071/pdoresources-and-tvfilters#dis-post-513666
Получается, что мой TV на этапе вывода все-таки не был в unix формате, хотя уже на выходе был в нем
Комментарии: 3
добавить
tvPrefix=>''
не забыли?
Кстати расскажите, а что это в MODX за документы/ мероприятия такие?
tvPrefix=>''
не забыли?
Кстати расскажите, а что это в MODX за документы/ мероприятия такие?
tvPrefix, как я понимаю, тут не при чем. Он в параметре where не используется.
А про "документы\мероприятия" — это я так про ресурсы написал. Сайт с анонсами мероприятий.
А про "документы\мероприятия" — это я так про ресурсы написал. Сайт с анонсами мероприятий.
Проблема решена, благодаря вот этому посту — forums.modx.com/thread/92071/pdoresources-and-tvfilters#dis-post-513666
Получается, что мой TV на этапе вывода все-таки не был в unix формате, хотя уже на выходе был в нем.
Получается, что мой TV на этапе вывода все-таки не был в unix формате, хотя уже на выходе был в нем.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.