pdoResources - как выбрать по незаполнненому ТВ? Pdoresources modx revo


pdoResources / Сниппеты / pdoTools / docs.modx.pro

Сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для 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 Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &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» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]].
&prepareTVs «1», что означает подготовку всех ТВ, указанных в &includeTVs Список ТВ параметров, которые нужно подготовить перед выводом.
&processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
&tvPrefix tv. Префикс для ТВ параметров.
&useWeblinkUrl Генерировать ссылку с учетом класса ресурса, включает плейсхолдер [[+link]].
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&toSeparatePlaceholders Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т.д.
&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.

docs.modx.pro

pdoResources как замена getResources / Сниппеты / Modx Revolution / Технический блог веб-разработчика

pdoResources как замена getResources

Ближайший аналог этих сниппетов в Evo - это Ditto. Используются для вывода дочерних ресурсов текущего документа, но можно указать и определённого родителя. Как пример, такое можно встретить в блоге - когда выводятся все записи определённой категории. pdoResources гораздо функциональнее и шустрее getResources, поэтому я его больше рекомендую к использованию. Различия в использовании параметров данных снипетов минимальны, поэтому переход на pdoResources будет безболезненным. Там же, где всё-таки есть небольшие нюансы, об этом будет написано отдельно. 

Основные параметры

getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&parents=`[­[*id]]`

&parents=`[­[*id]]`

Список родителей, из которых будут выводиться дочерние ресурсы (указываются через запятую). Если перед именем ресурса поставить дефис, то такой ресурс будет исключаться из выборки.  

&resources

&resources Список ресурсов для вывода. При указании дефиса, ресурс исключается из выборки. 

&depth=`10`

&depth=`10` Глубина выборки от родителя. 

&tvFilters

&tvFilters

Фильтрация ресурсов по значениям TV. В качестве разделителя AND используется ","В качестве разделителя OR используется "||"

Примеры вызова: &tvFilters=`color==red||color==yellow` - TV может принимать одно из двух значений, &tvFilters=`color==red,size==small` - одно из значений TV равно red, другое равно small,&tvFilters=`color==red||color==yellow,size==small||size=big` - комбинируем перечисленные выше два варианта, что так же допускается. 

Фильтрация для поиска использует оператор LIKE, поэтому можно писать так: &tvFilters=`mytv==А%` - название TV начинается на А. 

pdoResources. Можно использовать кастомные разделители значений. Задаются в параметрах tvFiltersOrDelimiter=`||`, tvFiltersAndDelimiter=`,`- разделители для "ИЛИ" и "И" соответственно.   

&sortby=`createdon`

&sortby=`pagetitle`

Поле ресурса, по которому будет происходить сортировка.Сортировка в случайном порядке: &sortby=`RAND()`Так же, можно указывать JSON массив сразу из нескольких полей:&sortby=`{"pagetitle":"ASC","menuindex":"DESC"}`

pdoResources. Eсли в параметрах свойства includeTVs перечислены значения TV, то возможна сортировка и по ним.  

getResources. Для сортировки по TV параметрам и задания направления используются параметры sortbyTV и sortdirTV соответственно. 

&sortdir=`DESC`

&sortdir=`DESC`

Направление для сортировки. 

&limit=`5`

&limit=`10`

Ограничение по количеству результатов.

&offset=`0`

&offset=`0`

Пропуск результатов от начала. 

&where

&where

Ограничение выборки по тем или иным параметрам. Представляет собой строку, закодированную в JSON.

&context

&context

Ограничение выборки по контексту.

Дополнительные параметры

getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&showUnpublished=`0`

&showUnpublished=`0`

Показывать ли неопубликованные ресурсы. 

&showDeleted=`0`

&showDeleted=`0` Показывать ли ресурсы, помеченные как удалённые.

&showHidden=`0`

&showHidden=`0` Показывать ли ресурсы, у которых стоит галочка "Не показывать в меню".

&hideContainers=`0`

&hideContainers=`0` Показывать ли ресурсы, которые являются контейнерами. 

&includeContent=`0`

&includeContent=`0` Подгружать ли поле content.

&includeTVs=`0`

&includeTVs

В параметрах указываем TV, которые так же будут доступны. В чанке доступ к TV будет доступен через плэйсхолдеры с префиксом tv. Например, [­[+tv.price]]

&prepareTVs=`1`

&prepareTVs=`1`

Список TV-параметров, которые нужно подготовить перед выборкой. 1 означает - подготовить все TV.

&processTVs=`0`

&processTVs

Список TV, которые будут обработаны перед выводом. pdoResources. Если поставить 1, то будут обработаны все TV, указанные в includeTVs.

&tvPrefix=`tv.`

&tvPrefix=`tv.`

Префикс для TV параметров. 

&idx=`1`

&idx

Цифра, с которой будет начинаться итерируемый плейсхолдер [­[+idx]]

&totalVar=`total`

&totalVar=`total`

Имя плейсхолдера, в котором будет храниться общее количество результатов. 

debug=`false`

&showLog=`0`

Будет ли выведена информация, отвечающая за отладку. Какие SQL запросы были выполнены и т. д. 

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

getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&tpl

&tpl

Имя чанка ресурса. Если не указано, то будет выведено содержимое всех полей. 

&tplOdd

&tplOdd Имя чанка для чётных ресурсов. 

&tplFirst

&tplFirst Имя чанка для первого ресурса. 

&tplLast

&tplLast Имя чанка для последнего ресурса.

&tplCondition

&tplCondition Поле ресурса, в котором будет содержаться значение для выбора чанка по условию, заданному в параметре conditionalTpls

&conditionalTpls

&conditionalTpls

JSON-строка с массивом, ключом которого будет выступать строка, которая будет сравниваться с полем, указанным в параметре tplCondition. А в качестве значения ключа будет выступать имя чанка, который будет использован, если условие выполнится. 

pdoResources. Оператор сравнения можно дополнительно указать в параметре tplOperator. 

&tplWrapper

&tplWrapper

Чанк-обёртка, в котором будут выводиться все ресурсы. [­[+output]] - плэйсхолдер всех результатов. Примечание. Не работает с параметром &toSeparatePlaceholders

&wrapIfEmpty=`false`

&wrapIfEmpty

Если в качестве значения указать 1, то принудительно выводит чанк, указанный в параметре tplWrapper,  даже если результатов нет. 

&outputSeparator=`\n`

&outputSeparator

Строка для разделения результатов вывода. 

&toPlaceholder

&toPlaceholder

Если не пусто, то сниппет вместо вывода на экран, сохранит все результаты в плэйсхолдер. 

&toSeparatePlaceholders

&toSeparatePlaceholders

Если заполнить значение данного параметра, то вместо плэйсхолдера со всеми результатами, на выходе получится множество плэйсхолдеров, которые начинаются со значения, указанного вами в данном параметре. А после этого параметра будет идти порядковый номер результата плэйсхолдера. 

Примеры работы

Самый простой вызов, с необходимым минимумом параметров:

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

Когда необходимо подключить дополнительный TV при выводе: 

[­[pdoResources?   &parents=`1`   &depth=`0`  &tpl=`catalog_item`   &includeTVs=`price` ]]

Сортируем элементы по индексу (порядок расположения в дереве элементов):

[­[!pdoResources?   &tpl=`item_cat_second`   &depth=`0`   &parents=`9`   &sortby=`menuindex`   &sortdir=`ASC`]]

cms-dev.ru

Вывод ресурсов в MODX Revo при помощи pdoResources

Приветствую вас уважаемые читатели! В предыдущих статьях мы наполнили сайт контентом, сделали меню и хлебные крошки. Сегодня мы изучим сниппет pdoResources, который входит в состав пакета PdoTools и предназначен для вывода ресурсов в любом оформлении на любой странице.

В моем случае мне нужно заменить статический контент на главной странице (из чанка content), если вы помноте он выглядит так:

chank-content

А статический код этого чанка сейчас такой:

<div> <div> <p><a href="[[~8]]"><img src="assets/img/1.png" alt="Вертикальные"><br>Вертикальные</a></p> </div> <div> <p><a href="[[~9]]"><img src="assets/img/2.png" alt="Горизонтальные"><br>Горизонтальные</a></p> </div> <div> <p><a href="[[~10]]"><img src="assets/img/3.png" alt="В форме креста"><br>В форме креста</a></p> </div> <div> <p><a href="[[~11]]"><img src="assets/img/4.png" alt="Детские"><br>Детские</a></p> </div> <div> <p><a href="[[~12]]"><img src="assets/img/5.png" alt="Импортные"><br>Импортные</a></p> </div> <div> <p><a href="[[~13]]"><img src="assets/img/6.png" alt="Мемориальные комплексы"><br>Мемориальные<br/>комплексы</a></p> </div> </div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<div>

<div>

  <p><a href="[[~8]]"><img src="assets/img/1.png" alt="Вертикальные"><br>Вертикальные</a></p>

</div>

<div>

  <p><a href="[[~9]]"><img src="assets/img/2.png" alt="Горизонтальные"><br>Горизонтальные</a></p>

</div>

<div>

  <p><a href="[[~10]]"><img src="assets/img/3.png" alt="В форме креста"><br>В форме креста</a></p>

</div>

<div>

  <p><a href="[[~11]]"><img src="assets/img/4.png" alt="Детские"><br>Детские</a></p>

</div>

<div>

  <p><a href="[[~12]]"><img src="assets/img/5.png" alt="Импортные"><br>Импортные</a></p>

</div>

<div>

  <p><a href="[[~13]]"><img src="assets/img/6.png" alt="Мемориальные комплексы"><br>Мемориальные<br/>комплексы</a></p>

</div>

</div>

По идее все можно оставить и так, ссылки прописаны (<a href=»[[~13]]»>), все работает. Если бы я делал сайт для себя возможно так бы все и оставил, но сайт не для себя, а для человека который далек от веб-дизайна, да и мало ли появиться новый раздел или удалиться какой нибудь раздел, не лазить же постоянно по коду и удалять (добавлять) зад назад. По то эму его лучше сделать динамичным. И так начнем.

Первым делом создаем чанк где будет формироваться оформление и контент, назовем его «home» и вставим в него повторяющуюся часть кода:

<div> <p><a href="[[~8]]"><img src="assets/img/1.png" alt="Вертикальные"><br>Вертикальные</a></p> </div>

<div>

  <p><a href="[[~8]]"><img src="assets/img/1.png" alt="Вертикальные"><br>Вертикальные</a></p>

</div>

Если вы заметили у меня 6 таких однотипных блоков. Теперь сделаем этот блок динамичным:

<div> <p><a href="[[+uri]]"><img src="[[+tv.image]]" alt="[[+pagetitle]]"><br>[[+pagetitle]]</a></p> </div>

<div>

  <p><a href="[[+uri]]"><img src="[[+tv.image]]" alt="[[+pagetitle]]"><br>[[+pagetitle]]</a></p>

</div>

Краткий разбор:

Теперь удаляем все статическое содержимое из этого чанка и вызываем все это содержимое при помощи pdoResources.

<div> [[pdoResources? &parents=`7` &depth=`0` &tpl=`home` &includeTVs=`image` &sortdir=`ASC` ]] </div>

<div>

[[pdoResources?

&parents=`7`

&depth=`0`

&tpl=`home`

&includeTVs=`image`

&sortdir=`ASC`

]]

</div>

Краткое описание параметров:

&parents =`7` - родители ресурсов (0 - все ресурсы) &depth =`0`- уровень вложенности  &tpl =`home` - чанк оформления, для вывода ресурсов &includeTVs =`image` - подключаем TV поля (через запятую) &sortdir =`ASC` - направление сортировки

&parents =`7` - родители ресурсов (0 - все ресурсы)

&depth =`0`- уровень вложенности 

&tpl =`home` - чанк оформления, для вывода ресурсов

&includeTVs =`image` - подключаем TV поля (через запятую)

&sortdir =`ASC` - направление сортировки

Подробнее обо всех параметрах, читайте в официальной документации: docs.modx.pro/components/pdotools/snippets/pdoresources

Таким образом можно вывести практически все что угодно.

Да точно таким же образом можно все вывести при помощи PdoPage и в добавок к тому если много ресурсов для вывода, то их можно разбить на страницы, об этом в следующем уроке: Вывод ресурсов при помощи pdoResources

web-revenue.ru

Вывод списка ресурсов на сайте с использованием 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 Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &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» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]].
&prepareTVs «1», что означает подготовку всех ТВ, указанных в &includeTVs Список ТВ параметров, которые нужно подготовить перед выводом.
&processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
&tvPrefix tv. Префикс для ТВ параметров.
&useWeblinkUrl Генерировать ссылку с учетом класса ресурса, включает плейсхолдер [[+link]].
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&toSeparatePlaceholders Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т.д.
&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.

www.riwkus.pro

как выбрать по незаполнненому ТВ? / modx.pro

Как выбрать все ресурсы, у которых не заполнен ТВ например через pdoResources или getTickets? То есть есть тв moderation. Нужно выбрать все ресурсы, у которых тв moderation != 1. Комментарий отсюда не работает. Эта статья тоже ничего не дала.

То есть варианты типа

'where' => '{ "moderation:IS": null }', 'where' => '{ "moderation": "" }', 'where' => '{ "moderation:!=": 1 }', 'where' => '{ "TVmoderation.value:!=":1 }', 'where' => '{ "moderation:IS": null, "OR:moderation":"" }', 'where' => '[ TVmoderation.value != 1 ]',не работают, а точнее выводят 0 результатов. Вот &showLog:0.0000851: pdoTools loaded 0.0000339: xPDO query object created 0.0003300: Included list of tvs: moderation 0.0001380: leftJoined modTemplateVarResource as TVmoderation 0.0002620: Added selection of Ticket: 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` 0.0000091: Added selection of modTemplateVarResource: IFNULL(`value`, '0') AS `tv.moderation` 0.0000350: Replaced TV conditions 0.0005832: Processed additional conditions 0.0008240: Added where condition: `TVmoderation`.`value`:!==1, Ticket.parent:IN(34,118893,118894,118896,118897,118898,118899,118900,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,118823,118824,118842,118844,118861,118881,118907,118913,118927,118979,118988,118990,118991), Ticket.deleted=0 0.0000231: Replaced TV conditions 0.0000570: Sorted by Ticket.publishedon, DESC 0.0002320: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `Ticket`.`id`, `Ticket`.`type`, `Ticket`.`contentType`, `Ticket`.`pagetitle`, `Ticket`.`longtitle`, `Ticket`.`description`, `Ticket`.`alias`, `Ticket`.`link_attributes`, `Ticket`.`published`, `Ticket`.`pub_date`, `Ticket`.`unpub_date`, `Ticket`.`parent`, `Ticket`.`isfolder`, `Ticket`.`introtext`, `Ticket`.`richtext`, `Ticket`.`template`, `Ticket`.`menuindex`, `Ticket`.`searchable`, `Ticket`.`cacheable`, `Ticket`.`createdby`, `Ticket`.`createdon`, `Ticket`.`editedby`, `Ticket`.`editedon`, `Ticket`.`deleted`, `Ticket`.`deletedon`, `Ticket`.`deletedby`, `Ticket`.`publishedon`, `Ticket`.`publishedby`, `Ticket`.`menutitle`, `Ticket`.`donthit`, `Ticket`.`privateweb`, `Ticket`.`privatemgr`, `Ticket`.`content_dispo`, `Ticket`.`hidemenu`, `Ticket`.`class_key`, `Ticket`.`context_key`, `Ticket`.`content_type`, `Ticket`.`uri`, `Ticket`.`uri_override`, `Ticket`.`hide_children_in_tree`, `Ticket`.`show_in_tree`, `Ticket`.`properties`, IFNULL(`TVmoderation`.`value`, '0') AS `tv.moderation` FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVmoderation` ON `TVmoderation`.`contentid` = `Ticket`.`id` AND `TVmoderation`.`tmplvarid` = 76 WHERE ( `TVmoderation`.`value` != '1' AND `Ticket`.`parent` IN (34,118893,118894,118896,118897,118898,118899,118900,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,118823,118824,118842,118844,118861,118881,118907,118913,118927,118979,118988,118990,118991) AND `Ticket`.`deleted` = 0 ) ORDER BY Ticket.publishedon DESC " 0.0010159: SQL executed 0.0001111: Total rows: 0 0.0000150: Rows fetched 0.0000141: Prepared and processed TVs 0.0000010: Returning processed chunks 0.0032361: Total time 18 087 936: Memory usageКак можно вывести только ресурсы, у которых TV != 1?

modx.pro


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