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 | Направление сортировки: по убыванию или возрастанию. |
&setTotal | 0 | Отключение выборки total по умолчанию (с версии 2.11.0). Сниппет pdoPage включает его всегда. |
&limit | 10 | Ограничение количества результатов выборки. Можно использовать «0». |
&offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit |
&first | 1 | Номер первой итерации вывода результатов. |
&last | Автоматически, по формуле (total + first — 1) | Номер последней итерации вывода результатов. |
Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch3`. | ||
&tvFilters | Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: | |
&tvFiltersAndDelimiter | «,» | Разделитель для условий AND в параметре &tvFilters. |
&tvFiltersOrDelimiter | «||» | Разделитель для условий OR в параметре &tvFilters. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации вывода, то есть отвечают за внешний вид.
Название | Описание |
---|---|
&returnIds | Установите значение «1», чтобы вернуть строку со списком id ресурсов, вместо оформленных результатов. Все указанные шаблоны игнорируются. |
&tpl | Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. |
&tplFirst | Имя чанка для первого ресурса в результатах. |
&tplLast | Имя чанка для последнего ресурса в результатах. |
&tplOdd | Имя чанка для каждого второго ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов). |
&tplWrapper | Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]] . Не работает вместе с параметром &toSeparatePlaceholders. |
&wrapIfEmpty | Включает вывод чанка-обертки &tplWrapper даже если результатов нет. |
&tplCondition | Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. |
&tplOperator | Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls. |
&conditionalTpls | JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в |
&outputSeparator | Необязательная строка для разделения результатов работы. |
Параметры результатов
Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.
Название | По умолчанию | Описание |
---|---|---|
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&idx | Вы можете указать стартовый номер итерации вывода результатов. | |
&totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. Параметр setTotal должен быть включен. |
&includeContent | 0 | Включаем поле «content» в выборку. |
&includeTVs | Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]] | |
&prepareTVs | «1», что означает подготовку всех ТВ, указанных в &includeTVs | Список ТВ параметров, которые нужно подготовить перед выводом. |
&processTVs | Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs. | |
&tvPrefix | tv. | Префикс для ТВ параметров. |
&useWeblinkUrl | Генерировать ссылку с учетом класса ресурса, включает плейсхолдер . | |
&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` ]]
Если нужно вывести элементы в том же порядке, как они объявлены в параметре &resources
[[pdoResources? &resources=`213,34,58,290` &sortby=`` &sortdir=`ASC` &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.
Документация по 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.
- 2.99
- 1
- 2
- 3
- 4
- 5
pdoResources/Snippets/pdoTools/docs.modx.pro
Фрагмент для отображения списка ресурсов. Это расширенная замена getResources: имеет все функции, но без недостатков.
Умеет правильно отсортировать настройки телевизора, прикрепить таблицу с образцом, включить или исключить категории из разных контекстов и многое другое.
Свойства
Свойства выбора ресурсов
Эти свойства определяют, какие ресурсы будут отображаться в сгенерированном списке.
Имя | По умолчанию | Описание |
---|---|---|
&родители | Текущий ресурс | Список родителей, разделенных запятыми, для поиска результатов. Установите на 0 для неограниченного, на +0 для верхнего уровня. Если родительский идентификатор начинается с тире, он и его дочерние элементы исключаются из запроса. |
&глубина | 10 | Глубина поиска дочерних ресурсов от родительского в дереве ресурсов. |
&ресурсы | Разделенный запятыми список ресурсов для добавления к результатам. Если идентификатор ресурса начинается с дефиса, этот ресурс исключается из запроса. | |
&контекст | Ограничить ресурсы из данного контекста. | |
&где | Массив дополнительных параметров выбора в формате JSON. | |
Показать Скрытый | 1 | Показать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показать неопубликованные ресурсы. |
&showDeleted | 0 | Показать ресурсы, помеченные как удаленные. |
&hideContainers | 0 | Исключить ресурсы контейнера, то есть ресурсы с «isfolder = 1». |
&выбрать | 0 | Список полей, разделенных запятыми, которые необходимо получить. Вы можете указать массив строк JSON, например, {«modResource»:»id,pagetitle,content»} . |
&сортировать по | заголовок страницы | Любое поле ресурса для сортировки, включая TV, если также установлено свойство &includeTVs . Вы можете указать строку JSON с массивом из нескольких полей, например {«tvname»:»ASC», «pagetitle»:»DESC»} . Для случайной сортировки используйте «RAND()». |
&сортировка | DESC | Направление сортировки: по возрастанию или по убыванию. |
&предел | 10 | Ограничить количество результатов. Вы можете использовать «0» без ограничений. |
&смещение | 0 | Количество элементов для пропуска с самого начала. |
&первый | 1 | Номер первого элемента результатов вывода. |
и последний | Автоматический, по формуле (всего + первый — 1) | Номер последнего элемента результатов. |
&LoadModels | Разделенный запятыми список компонентов, модель которых необходимо загрузить для построения запроса. Пример: &loadModels=`ms2gallery,msearch3` . | |
&TVФильтры | Список фильтров на ТВ, разделенных И и ИЛИ. Указанный разделителем параметр &tvFiltersOrDelimiter представляет логическое условие ИЛИ на нем и условия, сгруппированные в первую очередь. Внутри каждой группы можно указать список значений, разделенных &tvFiltersAndDelimiter . Поиск значений может производиться в любом конкретном ТВ, если указано «myTV == значение», или в любом «значении». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo` . Обратите внимание: в фильтре используется оператор LIKE, а символ «%» является метасимволом. Это будет искать значения для ресурсов, которые находятся в таблице site_tmplvar_contentvalues, а не из настроек телевизора по умолчанию. | |
&tvФильтры и разделитель | «,» | Разделитель условного И свойства &tvFilters . |
&tvFiltersOrDelimiter | «||» | Разделитель для свойства условного ИЛИ &tvFilters . |
Свойства шаблона
Эти свойства определяют фрагменты, содержащие шаблоны для форматирования генерируемого вывода.
Имя | Описание |
---|---|
&returnIds | Установите значение «1», чтобы вместо полных результатов возвращалась строка со списком идентификаторов ресурсов. Все шаблоны игнорируются. |
&tpl | Чанк имени для форматирования отдельных элементов. Если не указано, содержимое полей ресурса будет напечатано на экране. |
&tplFirst | Имя чанка для форматирования первого элемента в результатах. |
&tplLast | Имя чанка для форматирования последнего элемента в результатах. |
&tplOdd | Имя чанка для форматирования каждого нечетного элемента в результатах. |
&tplWrapper | Чанк — обертка, чтобы обернуть все результаты. Принимает один заполнитель: [[+output]] . Он не работает в сочетании с &toSeparatePlaceholders . |
&wrapIfEmpty | Включает внешнюю оболочку чанка *&tplWrapper**, даже если нет результатов. |
&tplCondition | Определяет поле ресурса для оценки по ключам, определенным в свойстве &conditionalTpls . |
&tplОператор | Необязательный оператор для сравнения поля ресурса &tplCondition с массивом значений и в чанках &conditionalTpls . |
&условныйTpls | Объект JSON, определяющий карту значений полей и связанных фрагментов tpl для использования, когда поле, определенное &tplCondition соответствует значению. Оператор сравнения указан в &tplOperator . Для операторов типа isempty нельзя использовать массив ключей. |
&выходной разделитель | Необязательная строка для разделения результатов. |
Свойства результата
Эти свойства дополнительно определяют, какие данные извлекать и как их отображать.
Имя | По умолчанию | Описание |
---|---|---|
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (модификаторы вывода, фрагменты и т. д.) удаляются. |
&idx | Начальное количество итераций вывода. | |
&setTotal | 0 | Указывает, следует ли заполнять общий заполнитель числом результатов. |
&общая переменная | всего | Имя заполнителя для хранения общего количества результатов. |
&includeContent | 0 | Указывает, должно ли возвращаться в результатах поле «content» каждого ресурса. |
&включая телевизоры | Разделенный запятыми список значений переменных шаблона, которые должны быть включены в заполнители, доступные для каждого шаблона ресурса. Пример: «действие, время» даст заполнители [[+tv.action]] и [[+tv.time]] . | |
&Подготовка телевизоров | «1», подготавливает все телевизоры, указанные в &includeTVs | Разделенный запятыми список значений TV, зависящих от медиа-источника, который должен быть подготовлен перед выводом. |
&processTV | Разделенный запятыми список TV, которые должны быть обработаны в соответствии с их параметрами вывода. Если установлено значение «1», все телевизоры, перечисленные в списке &includeTVs будет обработан. | |
&tvPrefix | тв. | Префикс ТВ свойство. |
&схема | -1 | Тип схемы URL, передаваемой в modX::makeUrl(). См. здесь список допустимых опций. |
&useWeblinkUrl | 0 | Создать ссылку на ресурс веб-ссылки, а не на целевой URL. ПРИМЕЧАНИЕ: Чтобы это работало должным образом, обязательно используйте [[+ссылка]] вместо [[~[[+id]]]] например. [[+pagetitle]] . |
&toPlaceholder | Сохранение вывода в заполнителе с этим именем вместо вывода вывода на экран. | |
&toSeparate Placeholders | Каждый элемент будет отображаться в заполнителе с именем, начинающимся с этого значения и заканчивающимся порядковым номером, начиная с нуля. Например, указав значение свойства «myPl», вы получите 9 заполнителей. 0299 [[+myPl0]] , [[+myPl1]] и т. д. | |
&showLog | 0 | Показывать дополнительную отладочную информацию об обработке фрагмента только вошедшим в систему пользователям Manager. |
Примеры
Простой список дочерних элементов ресурса №1:
[[pdoResources? &родители=`1` &глубина=`0` &tpl=`ListRowTpl` ]]
Чтобы добавить телевизор с именем «изображение», тогда вызов будет следующим:
[[pdoResources? &родители=`1` &глубина=`0` &tpl=`ListRowTpl` &includeTVs=`изображение` ]]
Чанк ListRowTpl теперь позволяет использовать заполнитель [[+tv.image]]
.
Pdoresources: показывать ресурсы в указанном порядке (отсортировано вручную)
frischnetz 1Привет!
Как указать точный порядок, в котором pdoresources перечисляет результаты?
Я хочу отобразить список с &resources=`9,3,6`
и получить ресурсы 9,3 и 6 в указанном порядке. Возможный?
Это может сработать?
&sortby=`{id:9,3,6}`
Если нет, вы можете отсортировать по любому телевизору, например, установить индекс меню для этих ресурсов на 1, 2, 3 соответственно, а затем использовать:
&sortby=`{menuindex:ASC}`Фришнец 3
sortby=`{id:9,3,6}`
Нет, это выдает ошибку:
Неустранимая ошибка : Uncaught TypeError: Аргумент 1, переданный в pdoFetch::replaceTVCondition(), должен быть из type array, null задано
(Сортировка с помощью menuindex здесь невозможна)
bruno17 4возможно
&sortby=`FIELD(modResource.id, 4,7,2,5,1)` &sortdir=`ASC`Люси 5
Может скобки нужны?
sortby=`{id:[9,3,6]}`Фришнец 6
Бинго! (странно, это было первое, что я попробовал, и тогда это не сработало…)
Спасибо!
@lucy Извините, все еще ошибки. Но версия Бруноса работает!
Люси 7Отлично, рад, что у вас все получилось. Я только что нашел его в документации для getResources.