Помогите разделить вывод мероприятий по дате
Добрый день, не получается нормально разделить мероприятия на «ближайшие» и «прошедшие» дата вводится через TV параметр, пытался сделать через снипет ImmediateEvents:
Ссылка на сайт для наглядности: честный-выбор.рф/meropriyatiya/
<?php
$tvid = 10; // id ТВ с датой
$date = date("Y-m-j" ." ". "H:m:s"); // Сегодня
$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);
}
этот код сверяет даты и выводит id мероприятий, в дальнейшем я использую:[[pdoResources?
&tpl=`ImmediateEvents`
&includeTVs=`1`
&includeContent=`1`
&includeTVs=`EventImage, EventDate`
&processTVs=`1`
&resources=`[[ImmediateEvents]]`
&limit=`4444`
]]
Проблема в том, что если нету мероприятий с датой позже сегодняшней, выводятся сразу все мероприятия (прошлые), пробовал делать выборку через tvfilters и where, вообще ничего не вышло. Как вывести правильно? И возможно ли сделать появление сообщения, нечто вроде «Ближайших мероприятий нет»?Ссылка на сайт для наглядности: честный-выбор.рф/meropriyatiya/
Комментарии: 6
снипет now:
Log:
<?php
echo date("Y-m-j" ." ". "H:m:s");
это в шаблоне:[[pdoResources?
&parents=`8`
&tpl=`ImmediateEvent`
&includeTVs=`1`
&includeContent=`1`
&includeTVs=`EventImage, EventDate`
&processTVs=`1`
&tvFilters=`EventDate>>[[!now]]`
&limit=`4444`
]]
не выводится вообще ничего:(Log:
0.0002301: pdoTools loaded
0.0000410: xPDO query object created
0.0000560: Added TVs filters
0.0004961: Included list of tvs: EventDate, EventImage
0.0004060: leftJoined modTemplateVarResource as TVeventdate
0.0003622: leftJoined modTemplateVarResource as TVeventimage
0.0007551: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000181: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.EventDate`
0.0000150: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.EventImage`
0.0000730: Replaced TV conditions
0.0006220: Processed additional conditions
0.0011730: Added where condition: 0=`TVeventdate`.`value` > '2016-09-7 08:09:27', modResource.parent:IN(8,9,17,18,19), modResource.published=1, modResource.deleted=0
0.0000448: Replaced TV conditions
0.0001941: Sorted by modResource.publishedon, DESC
0.0000060: Limited to 4444, offset 0
0.0003991: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `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(`TVeventdate`.`value`, '') AS `tv.EventDate`, IFNULL(`TVeventimage`.`value`, '') AS `tv.EventImage` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventdate` ON `TVeventdate`.`contentid` = `modResource`.`id` AND `TVeventdate`.`tmplvarid` = 10 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventimage` ON `TVeventimage`.`contentid` = `modResource`.`id` AND `TVeventimage`.`tmplvarid` = 8 WHERE ( `TVeventdate`.`value` > '2016-09-7 08:09:27' AND `modResource`.`parent` IN (8,9,17,18,19) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 4444 "
0.0010450: SQL executed
0.0000930: Total rows: 0
0.0000150: Rows fetched
0.0000219: Prepared and processed TVs
0.0000010: Returning processed chunks
0.0055571: Total time
7 602 176: Memory usage
[[!pdoResources?
&tpl=`ImmediateEvents`
&includeTVs=`1`
&includeContent=`1`
&includeTVs=`EventImage, EventDate`
&processTVs=`1`
&limit=`4444`
&where=`["TVEventDate.value >= NOW()"]`
&showLog=`1`
]]
Вызывать обязательно некэшированным. 0.0002420: pdoTools loaded
0.0002859: xPDO query object created
0.0012629: Included list of tvs: EventDate, EventImage
0.0004771: leftJoined modTemplateVarResource as TVeventdate
0.0004280: leftJoined modTemplateVarResource as TVeventimage
0.0006812: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000188: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.EventDate`
0.0000150: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.EventImage`
0.0000629: Replaced TV conditions
0.0007839: Processed additional conditions
0.0015960: Added where condition: 0=TVEventDate.value >= NOW(), modResource.parent:IN(8,9,17,18,19), modResource.published=1, modResource.deleted=0
0.0000360: Replaced TV conditions
0.0002081: Sorted by modResource.publishedon, DESC
0.0000081: Limited to 4444, offset 0
0.0010068: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `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(`TVeventdate`.`value`, '') AS `tv.EventDate`, IFNULL(`TVeventimage`.`value`, '') AS `tv.EventImage` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventdate` ON `TVeventdate`.`contentid` = `modResource`.`id` AND `TVeventdate`.`tmplvarid` = 10 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventimage` ON `TVeventimage`.`contentid` = `modResource`.`id` AND `TVeventimage`.`tmplvarid` = 8 WHERE ( TVEventDate.value >= NOW() AND `modResource`.`parent` IN (8,9,17,18,19) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 4444 "
0.0007062: Could not process query, error #1054: Unknown column 'TVEventDate.value' in 'where clause'
0.0071490: Total time
6 553 600: Memory usage
А так
...
&where=`["TVeventdate.value >= NOW()"]`
или так...
&where=`["EventDate >= NOW()"]`
&where=`[«EventDate >= NOW()»]` работает! Спасибо!
О, ребята! Какое спасибо вам за этот топик! Мне как раз нужно было сделать элемент, на котором выведется одна дата ближайшего события. Пощу свой вызов, который сработал (ну вдруг тут какой еще более зеленый нуб, чем я найдется)
[[!pdoResources?
&parents=`2`
&tpl=`event_tpl`
&sortby=`date`
&limit=`1`
&includeTVs=`date`
&where=`["date >= NOW()"]`
&sortdir=`ASC`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.