Сниппет pdoResources предназначен для вывода списков ресурсов на сайте и является продвинутой заменой стандартного getResources. Он обладает всеми возможностями оригинального сниппета, но лишен его недостатков и работает в несколько раз быстрее благодаря оптимизированной работе с базой данных. Сниппет поддерживает подключение других таблиц через разные типы JOIN, позволяет указывать конкретные колонки для выборки и создавать гибкие условия фильтрации вплоть до чистого SQL.
Переход с getResources на pdoResources в большинстве случаев требует минимальных изменений — достаточно просто заменить имя сниппета в вызове. Основное отличие заключается в параметре &includeTVs: у getResources он принимает значения Да/Нет, тогда как у pdoResources — список конкретных названий TV-параметров через запятую.
Параметры pdoResources
Параметры выборки ресурсов
Они определяют, какие ресурсы появятся в генерируемом списке.
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
&parents |
ID текущей страницы | Укажите родительские контейнеры через запятую для выборки дочерних ресурсов. Значение 0 убирает ограничение. Минус перед ID (-5) исключает контейнер и его потомков |
&depth |
10 |
Уровень вложенности для поиска дочерних элементов от указанных родителей |
&resources |
— | Конкретные ID ресурсов для вывода, разделенные запятыми. Минус перед ID исключает ресурс из результатов |
&context |
— | Фильтр по контексту — выводить ресурсы только из указанных контекстов |
&where |
— | Дополнительные условия SQL в формате JSON для тонкой настройки выборки |
&showHidden |
1 |
Включать в результаты ресурсы со статусом «скрыт в меню» |
&showUnpublished |
0 |
Отображать неопубликованные документы |
&showDeleted |
0 |
Показывать ресурсы помеченные как удаленные |
&hideContainers |
0 |
Исключить из вывода контейнеры (ресурсы с isfolder = 1) |
&select |
— | Перечень полей для выборки через запятую или JSON массив типа {"modResource":"id,pagetitle"} |
&sortby |
pagetitle |
Поле для сортировки результатов, включая TV-параметры. Поддерживает JSON для множественной сортировки или RAND() для случайного порядка |
&sortdir |
DESC |
Направление сортировки: ASC (по возрастанию) или DESC (по убыванию) |
&setTotal |
0 |
Выполнять подсчет общего количества результатов. Автоматически включается в pdoPage |
&limit |
10 |
Максимальное число результатов на странице. 0 убирает ограничение |
&offset |
0 |
Количество ресурсов для пропуска от начала выборки |
&first |
1 |
Стартовый номер для счетчика итераций в плейсхолдере [[+idx]] |
&last |
Вычисляется автоматически | Конечный номер итерации, рассчитывается как total + first - 1 |
&loadModels |
— | Компоненты для загрузки моделей через запятую (пример: ms2gallery,msearch2) |
&tvFilters |
— | Фильтрация по TV-параметрам с операторами AND/OR. Используйте разделители из параметров ниже |
&tvFiltersAndDelimiter |
, |
Символ для разделения условий AND в фильтрах TV |
&tvFiltersOrDelimiter |
` |
Параметры шаблонов
Отвечают за внешний вид.
| Параметр | Описание |
|---|---|
&returnIds |
При значении 1 возвращает только строку с ID ресурсов вместо отформатированного HTML |
&tpl |
Чанк для оформления каждого отдельного ресурса в списке |
&tplFirst |
Альтернативный чанк для самого первого элемента в выборке |
&tplLast |
Альтернативный чанк для последнего элемента в выборке |
&tplOdd |
Чанк для четных элементов (несмотря на название «odd») |
&tplWrapper |
Обертка для всех результатов с плейсхолдером [[+output]]. Несовместим с &toSeparatePlaceholders |
&wrapIfEmpty |
Выводить обертку &tplWrapper даже когда результатов нет |
&tplCondition |
Поле ресурса для проверки условия выбора чанка |
&tplOperator |
Оператор сравнения для условия в &tplCondition |
&conditionalTpls |
JSON массив с условиями и соответствующими чанками для вывода |
&outputSeparator |
Строка-разделитель между элементами результатов |
Параметры результатов
Дополнительно определяют, какие данные и каким способом будут выводиться.
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
&fastMode |
0 |
Ускоренная обработка чанков с удалением необработанных тегов |
&idx |
— | Начальное значение для счетчика итераций [[+idx]] |
&totalVar |
total |
Имя плейсхолдера для записи общего количества найденных ресурсов |
&includeContent |
0 |
Добавить поле content в выборку (увеличивает объем данных) |
&includeTVs |
— | TV-параметры для включения в выборку через запятую |
&prepareTVs |
1 |
Список TV для предварительной подготовки или 1 для обработки всех из &includeTVs |
&processTVs |
— | TV-параметры для обработки перед выводом или 1 для всех |
&tvPrefix |
tv. |
Префикс для TV-параметров в плейсхолдерах |
&useWeblinkUrl |
— | Учитывать тип ресурса при генерации ссылок (для weblink и symlink) |
&toPlaceholder |
— | Сохранить результаты в указанный плейсхолдер вместо прямого вывода |
&toSeparatePlaceholders |
— | Разбить результаты по отдельным плейсхолдерам с указанным префиксом и номером |
&showLog |
0 |
Вывести отладочную информацию (только для авторизованных в mgr) |
Примеры
Простейший вызов сниппета для вывода дочерних ресурсов текущей страницы:
[[!pdoResources?
&tpl=`ListRow`
]]
Вывод ресурсов из конкретного контейнера с ID 5:
[[pdoResources?
&parents=`5`
&depth=`0`
&tpl=`ListRow`
]]
Если используется TV-параметр image, то вызов изменится следующим образом:
[[pdoResources?
&parents=`5`
&depth=`0`
&tpl=`ListRow`
&includeTVs=`image`
]]
В чанке ListRow за это поле будет отвечать плейсхолдер [[+tv.image]].
Работа с конкретными ресурсами
Если нужно вывести элементы в том же порядке, как они объявлены в параметре &resources:
[[pdoResources? &resources=`213,34,58,290` &sortdir=`ASC` &tpl=`ListRow`]]
Исключение конкретных ресурсов из выборки:
[[pdoResources? &parents=`5` &resources=`-12,-45` &tpl=`ListRow`]]
Сортировка и ограничение
Вывод последних 10 новостей по дате публикации:
[[pdoResources? &parents=`10` &sortby=`publishedon` &sortdir=`DESC` &limit=`10` &tpl=`NewsRow`]]
Случайный вывод 5 ресурсов:
[[pdoResources? &parents=`5` &sortby=`RAND()` &limit=`5` &tpl=`RandomItem`]]
Работа с TV-параметрами
Вывод с несколькими TV и без префикса:
[[pdoResources? &parents=`5` &includeTVs=`image,tags,date` &tvPrefix=`` &tpl=`ArticleRow`]]
Теперь в чанке можно использовать [[+image]] вместо [[+tv.image]].
Сортировка по TV-параметру:
[[pdoResources? &parents=`5` &includeTVs=`price,rating` &sortby=`price` &sortdir=`ASC` &tpl=`ProductRow`]]
Фильтрация
Исключение контейнеров и скрытых ресурсов:
[[pdoResources? &parents=`0` &hideContainers=`1` &showHidden=`0` &tpl=`PageRow`]]
Фильтрация по шаблонам:
[[pdoResources? &parents=`0` &templates=`1,5,7` &tpl=`ListRow`]]
Расширенная фильтрация через where:
[[pdoResources?
&parents=`5`
&where=`{
"publishedon:>": "2025-01-01",
"template:IN": [1,5,10]
}`
&tpl=`NewsRow`
]]
Фильтрация по TV
Простой фильтр по значению TV:
[[pdoResources?
&parents=`5`
&includeTVs=`category,status`
&tvFilters=`category==news,status==published`
&tpl=`ArticleRow`
]]
Фильтр с логикой OR:
[[pdoResources?
&parents=`5`
&includeTVs=`tags`
&tvFilters=`tags==summer||tags==vacation`
&tpl=`ArticleRow`
]]
Инлайн-шаблоны
Быстрый вывод без создания отдельного чанка:
[[pdoResources?
&parents=`5`
&tpl=`@INLINE
<article>
<h3><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h3>
<p>[[+introtext]]</p>
</article>`
]]
Простой список ссылок:
<ul>
[[pdoResources?
&parents=`5`
&tpl=`@INLINE <li><a href="[[~[[+id]]]]">[[+pagetitle]]</a></li>`
]]
</ul>
Вывод в плейсхолдеры
Сохранение результата для использования в другом месте:
[[pdoResources?
&parents=`5`
&limit=`5`
&tpl=`LatestNews`
&toPlaceholder=`latestNews`
]]
<aside>
[[+latestNews]]
</aside>
Возврат только ID ресурсов:
[[pdoResources?
&parents=`5`
&returnIds=`1`
&toPlaceholder=`idList`
]]
Список ID: [[+idList]]
Оптимизация
Выборка только нужных полей для ускорения работы:
[[pdoResources?
&parents=`5`
&select=`id,pagetitle,publishedon,introtext`
&includeContent=`0`
&tpl=`CompactRow`
]]
Быстрый режим без обработки дополнительных тегов:
[[pdoResources?
&parents=`5`
&tpl=`SimpleRow`
&fastMode=`1`
]]
Особенности работы с датами
В отличие от getResources, даты в pdoResources уже хранятся в формате timestamp. Можно сразу применять модификатор date:
[[pdoResources?
&parents=`5`
&tpl=`@INLINE
<article>
<h3>[[+pagetitle]]</h3>
<time>[[+publishedon:date=`%d.%m.%Y`]]</time>
</article>`
]]
Не нужно использовать strtotime как в getResources — даты уже в нужном формате.






