Почему срабатывает неправильная выборка ресурсов?
[[!pdoPage?
&parents=`3`
&showHidden=`0`
&tpl=`list_publications`
&limit=`12`
&includeContent=`1`
&includeTVs=`img_project`
&pageLinkScheme=`/[[+pageVarKey]]/[[+page]]/`
&where=`["FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!today]]'"]`
]]
хочу выводить записи за вчера и сегодня из категории 3, но выводятся записи из всех категорий… почему так? Т.е. parents не учитывается в данном условии? Комментарии: 3
&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!today]]')"]
Кроме того, этот код желательно оптимизировать. Вместо вызова 2-х сниппетов вызывать один с выставлением плейсхолдеров today и yesterday. Вызывать его перед pdoPage. Тогда условие будет выглядеть так&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+today]]')"]
Есть еще вариант с использованием фенома. Тогда можно из без сниппета обойтись.Совет. У pdoTools сниппетов есть замечательный параметр showLog. Советую его использовать при отладке.
showLog пользовался, там все ок, но почему то все равно выбирает не те записи.
полностью мускл запрос
а как через феном сделать? если честно, то в нем вообще не понял ничего.
AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33)
а выводятся и 36 и 41 id… полностью мускл запрос
0.0005422: 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(`TVimg_project`.`value`, '') AS `tv.img_project` FROM `cmm_site_content` AS `modResource` LEFT JOIN `cmm_site_tmplvar_contentvalues` `TVimg_project` ON `TVimg_project`.`contentid` = `modResource`.`id` AND `TVimg_project`.`tmplvarid` = 2 WHERE ( FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-03' AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 12 "
а как через феном сделать? если честно, то в нем вообще не понял ничего.
а выводятся и 36 и 41 id…А выводятся они скорее всего потому, что для них срабатывает условие
FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02'
т.е. дата публикации у них '2016-04-02'. Поэтому я в первом комментарии и сделал группировку условия, чтобы OR было в скобках. Вот же как получается без группировки
WHERE ( FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-03' AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 )
А чтобы ограничить parent, нужно указать depth=1 (или 0, точно не помню).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.