Не могу составить запрос where в PdoResources. Pdoresources where modx


Документация по pdoResources

Сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для getResources: обладает всеми его возможностями, но лишен недостатков.

Умеет правильно сортировать ТВ параметры, присоединять таблицы при выборке, включать и исключать категории из разных контекстов и еще много чего.

Параметры

Параметры выборки ресурсов

Эти параметры определяют, какие ресурсы появятся в генерируемом списке.

Название По умолчанию Описание
&parents Текущий ресурс Список родителей, через запятую, для поиска результатов. Если поставить 0 - выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&depth 10 Глубина поиска дочерних ресурсов от родителя.
&resources  
Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&context   Ограничение выборки по контексту ресурсов.
&where   Массив дополнительных параметров выборки, закодированный в JSON.
&showHidden 1 Показывать ресурсы, скрытые в меню.
&showUnpublished 0 Показывать неопубликованные ресурсы.
&showDeleted 0 Показывать удалённые ресурсы.
&hideContainers 0 Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
&select 0 Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {"modResource":"id,pagetitle,content"}.
&sortby pagetitle Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей, например {"tvname":"ASC", "pagetitle":"DESC"}. Для случайно сортировки укажите «RAND()»
&sortdir DESC Направление сортировки: по убыванию или возрастанию.
&limit 10 Ограничение количества результатов выборки. Можно использовать «0».
&offset 0 Пропуск результатов от начала.
&first 1 Номер первой итерации вывода результатов.
&last Автоматически, по формуле (total + first - 1) Номер последней итерации вывода результатов.
&loadModels   Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch3`.
&tvFilters   Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ.
&tvFiltersAndDelimiter "," Разделитель для условий AND в параметре &tvFilters.
&tvFiltersOrDelimiter "||" Разделитель для условий OR в параметре &tvFilters.

Параметры шаблонов

Эти параметры устанавливают чанки, которые содержат шаблоны для генерации вывода, то есть отвечают за внешний вид.

Название Описание
&returnIds Установите значение «1», чтобы вернуть строку со списком id ресурсов, вместо оформленных результатов. Все указанные шаблоны игнорируются.
&tpl Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран.
&tplFirst Имя чанка для первого ресурса в результатах.
&tplLast Имя чанка для последнего ресурса в результатах.
&tplOdd Имя чанка для каждого второго ресурса.
&tplWrapper Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: . Не работает вместе с параметром &toSeparatePlaceholders.
&wrapIfEmpty Включает вывод чанка-обертки &tplWrapper даже если результатов нет.
&tplCondition Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls.
&tplOperator Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls.
&conditionalTpls JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях - чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.
&outputSeparator Необязательная строка для разделения результатов работы.

Параметры результатов

Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.

Название По умолчанию Описание
&fastMode 0 Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
&idx   Вы можете указать стартовый номер итерации вывода результатов.
&totalVar total Имя плейсхолдера для сохранения общего количества результатов.
&includeContent 0 Включаем поле «content» в выборку.
&includeTVs   Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры и .
&prepareTVs «1», что означает подготовку всех ТВ, указанных в &includeTVs Список ТВ параметров, которые нужно подготовить перед выводом.
&processTVs   Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
&tvPrefix tv. Префикс для ТВ параметров.
&useWeblinkUrl   Генерировать ссылку с учетом класса ресурса, включает плейсхолдер .
&toPlaceholder   Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&toSeparatePlaceholders   Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры , и т.д.
&showLog 0 Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».

Примеры

Простейший вывод списка дочерних ресурсов документа с идентификатором 1:

[[pdoResources? &parents=`1` &depth=`0` &tpl=`ListRowTpl` ]]

Если используется дополнительное поле image, то вызов изменится следующим образом:

[[pdoResources? &parents=`1` &depth=`0` &tpl=`ListRowTpl` &includeTVs=`image` ]]

В чанке ListRowTpl за это поле будет отвечать плейсхолдер [[+tv.image]]

Дополнительная информация

При переносе чанков с getResources, довольно распространённой ошибкой является использование модификатора strtotime, для форматирования даты.

Дело в том, что даты ресурсов и так хранятся в виде timestamp, но конвертируются в нормальные даты из-за использования объектов modResource - так запрограммировано в его свойствах. А потом, для форматирования даты, их нужно перевести обратно в timestamp. Выходит двойная ненужная конвертация.

pdoTools же работает напрямую с базой данных, без создания объектов и конвертации их значений, поэтому в чанк приходит timestamp, который не нужно дополнительно обрабатывать. Вы можете сразу применять модификатор date к значениям:

[[+publishedon:date=`%d.%m.%Y`]] или [[+createdon:date=`%Y-%m-%d`]]

Это касается работы с датами ресурсов и в других сниппетах pdoTools.

Голосов: 38 | Просмотров: 416

proweb63.ru

Как составить выборку where в pdoResources modx revo? — Toster.ru

Добрый день, подскажите пожалуйста как мне составить выборку по ТВ таким образом чтобы я мог выводить на странице только те ресурсы которые соответствуют полям , так же мне нужно указывать несколько значений в одном ТВ параметре , например цена 4000,5000,7000 вот мой код [[!pdoPage? &element=`pdoResources` &tpl=`zayavka_block` &parents=`1` &tplPageActive=`@INLINE<li><a href="[[+href]]">[[+pageNo]]</a></li>` &cache=`1` &cacheTime=`1800` &includeTVs=`metro,img,price_do,price_ot,street,area,price,object_id,kavdrat_ot,kavdrat_do,okrug` &hideContainers=`1` &where=`{"metro:IN":[ [[*svod_metro]] ]}` &maxLimit=`9` &showLog=`1` ]]

если фильтровать по цене то все получается и выводится , но как только я пытаюсь фильтровать по станциям метро или округам , мне просто отдаются все ресурсы вне зависимости от того нужны они или нет , вот что пишет лог

<pre>0.0001030: pdoTools loaded 0.0000250: xPDO query object created 0.0006289: Included list of tvs: <b>img, price_ot, price_do, price, street, kavdrat_ot, okrug, metro, area, object_id</b> 0.0002689: leftJoined <i>modTemplateVarResource</i> as <b>TVimg</b> 0.0002432: leftJoined <i>modTemplateVarResource</i> as <b>TVprice_ot</b> 0.0002389: leftJoined <i>modTemplateVarResource</i> as <b>TVprice_do</b> 0.0002511: leftJoined <i>modTemplateVarResource</i> as <b>TVprice</b> 0.0002370: leftJoined <i>modTemplateVarResource</i> as <b>TVstreet</b> 0.0002379: leftJoined <i>modTemplateVarResource</i> as <b>TVkavdrat_ot</b> 0.0002370: leftJoined <i>modTemplateVarResource</i> as <b>TVokrug</b> 0.0002520: leftJoined <i>modTemplateVarResource</i> as <b>TVmetro</b> 0.0002391: leftJoined <i>modTemplateVarResource</i> as <b>TVarea</b> 0.0002360: leftJoined <i>modTemplateVarResource</i> as <b>TVobject_id</b> 0.0004811: Added selection of <b>modResource</b>: <small>SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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`</small> 0.0000129: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.img`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.price_ot`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.price_do`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.price`</small> 0.0000091: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.street`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.kavdrat_ot`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.okrug`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.metro`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.area`</small> 0.0000100: Added selection of <b>modTemplateVarResource</b>: <small>IFNULL(`value`, '') AS `tv.object_id`</small> 0.0000370: Replaced TV conditions 0.0005081: Processed additional conditions 0.0009921: Added where condition: <b>0=, modResource.parent:IN(1,38,39,17,19,21,9,18,20,23), modResource.published=1, modResource.deleted=0, modResource.isfolder=0</b> 0.0000379: Replaced TV conditions 0.0001240: Sorted by <b>modResource.publishedon</b>, <b>DESC</b> 0.0000031: Limited to <b>9</b>, offset <b></b> 0.0003400: SQL prepared <small>"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`.`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`.`value`, '') AS `tv.img`, IFNULL(`TVprice_ot`.`value`, '') AS `tv.price_ot`, IFNULL(`TVprice_do`.`value`, '') AS `tv.price_do`, IFNULL(`TVprice`.`value`, '') AS `tv.price`, IFNULL(`TVstreet`.`value`, '') AS `tv.street`, IFNULL(`TVkavdrat_ot`.`value`, '') AS `tv.kavdrat_ot`, IFNULL(`TVokrug`.`value`, '') AS `tv.okrug`, IFNULL(`TVmetro`.`value`, '') AS `tv.metro`, IFNULL(`TVarea`.`value`, '') AS `tv.area`, IFNULL(`TVobject_id`.`value`, '') AS `tv.object_id` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVimg` ON `TVimg`.`contentid` = `modResource`.`id` AND `TVimg`.`tmplvarid` = 1 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVprice_ot` ON `TVprice_ot`.`contentid` = `modResource`.`id` AND `TVprice_ot`.`tmplvarid` = 11 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVprice_do` ON `TVprice_do`.`contentid` = `modResource`.`id` AND `TVprice_do`.`tmplvarid` = 12 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVprice` ON `TVprice`.`contentid` = `modResource`.`id` AND `TVprice`.`tmplvarid` = 13 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVstreet` ON `TVstreet`.`contentid` = `modResource`.`id` AND `TVstreet`.`tmplvarid` = 4 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVkavdrat_ot` ON `TVkavdrat_ot`.`contentid` = `modResource`.`id` AND `TVkavdrat_ot`.`tmplvarid` = 5 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVokrug` ON `TVokrug`.`contentid` = `modResource`.`id` AND `TVokrug`.`tmplvarid` = 8 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVmetro` ON `TVmetro`.`contentid` = `modResource`.`id` AND `TVmetro`.`tmplvarid` = 9 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVarea` ON `TVarea`.`contentid` = `modResource`.`id` AND `TVarea`.`tmplvarid` = 10 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVobject_id` ON `TVobject_id`.`contentid` = `modResource`.`id` AND `TVobject_id`.`tmplvarid` = 16 WHERE ( `modResource`.`parent` IN (1,38,39,17,19,21,9,18,20,23) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`isfolder` = 0 ) ORDER BY modResource.publishedon DESC LIMIT 9 "</small> 0.0010729: SQL executed 0.0000679: Total rows: <b>7</b> 0.0000832: Rows fetched 0.0357409: Could not process or prepare TV "kavdrat_do" 0.0013330: Could not process or prepare TV "kavdrat_do" 0.0005260: Could not process or prepare TV "kavdrat_do" 0.0005450: Could not process or prepare TV "kavdrat_do" 0.0005112: Could not process or prepare TV "kavdrat_do" 0.0005529: Could not process or prepare TV "kavdrat_do" 0.0005090: Could not process or prepare TV "kavdrat_do" 0.0397282: Prepared and processed TVs 0.0007460: Loaded chunk "zayavka_block" 0.0871048: Returning processed chunks 0.1335518: <b>Total time</b> 11 272 192: <b>Memory usage</b> </pre>

toster.ru

Не могу составить запрос where в PdoResources / modx.pro

Хочу выводить на каждой странице похожие материалы-миниатюры страниц, которые я сам укажу в дополнительном поле. Соответственно создал дополнительное поле(checkbox) и вывел в возможные значения все нужные страницы. Теперь вызываю PdoResources. Значение view_page включает в себя заголовки страниц (Инженерные работыО насЧип-тюнинг). Соответственно мне нужно выбрать страницы, которые встречаются поле view_page текущей страницы.[[pdoResources? &tpl=`menu2_1` &limit=`0` &depth=`5` &parents=`8` &select=`pagetitle` &includeTVs=`kart,text_ca,zag` &showLog=`1` &where=`{"[[*view_page]]:LIKE":"%[[+pagetitle]]%"}` ]]Проблема кажется из за того что не подставляются значения [[+pagetitle]]. Вот лог 0.0001440: pdoTools loaded 0.0000319: xPDO query object created 0.0004199: Included list of tvs: kart, text_ca, zag 0.0003679: leftJoined modTemplateVarResource as TVkart 0.0003090: leftJoined modTemplateVarResource as TVtext_ca 0.0003059: leftJoined modTemplateVarResource as TVzag 0.0001671: Added selection of modResource: SQL_CALC_FOUND_ROWS `pagetitle` 0.0000100: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.kart` 0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.text_ca` 0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.zag` 0.0000670: Replaced TV conditions 0.0006969: Processed additional conditions 0.0011878: Added where condition: Инженерные работыО насЧип-тюнинг:LIKE=%%, modResource.parent:IN(8,84,85,10,95,110,97,98,86,89,90,93,88,87,9,83,99,100,101,102,105,106,107,108,103,104,111,113,128,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127), modResource.published=1, modResource.deleted=0 0.0000348: Replaced TV conditions 0.0001581: Sorted by modResource.publishedon, DESC 0.0002868: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`pagetitle`, IFNULL(`TVkart`.`value`, '') AS `tv.kart`, IFNULL(`TVtext_ca`.`value`, '') AS `tv.text_ca`, IFNULL(`TVzag`.`value`, '') AS `tv.zag` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVkart` ON `TVkart`.`contentid` = `modResource`.`id` AND `TVkart`.`tmplvarid` = 23 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtext_ca` ON `TVtext_ca`.`contentid` = `modResource`.`id` AND `TVtext_ca`.`tmplvarid` = 25 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVzag` ON `TVzag`.`contentid` = `modResource`.`id` AND `TVzag`.`tmplvarid` = 24 WHERE ( `modResource`.`Инженерные работыО насЧип-тюнинг` LIKE '%%' AND `modResource`.`parent` IN (8,84,85,10,95,110,97,98,86,89,90,93,88,87,9,83,99,100,101,102,105,106,107,108,103,104,111,113,128,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY modResource.publishedon DESC " 0.0005851: Could not process query, error #1054: Unknown column 'modResource.Инженерные работыО насЧип-тюнинг' in 'where clause' 0.0041020: Total time 7 077 888: Memory usage

modx.pro


Prostoy-Site | Все права защищены © 2018 | Карта сайта