MODX. getResources компонент для вывода ресурсов

getResources — компонент для вывода ресурсов (страниц) на сайте. На момент написания статьи существует более продвинутая версия аналогичного сниппета — pdoResources, входящий в комплект pdoTools. Оба этих сниппета имеют практически одинаковые параметры, но за счет оптимизаторского таланта Безумкина, pdoResources обрабатывает запросы быстрее.

Использование getResources

Простейший вывод всех страниц каталога с id — 1

[[getResources? 
&parents=`1` 
&tpl=`myRowTpl`
]]

В параметре tpl указывается имя чанка с шаблоном вывода элемента. Если параметр tpl не указывать, на странице будет выведен массив из элементов выборки. 

Для вывода ресурсов текущей страницы вместо id указывается — [[*id]].

Для дальнейшей настройки вывода страниц, надо просто добавлять к текущей конструкции параметры, из списка ниже, исходя из конкретных нужд.

Параметры getResources

Параметры шаблонизации

Параметр По умолчанию Описание
&tpl   Имя чанка, выступающего в качестве шаблона для ресурса. Если не установлен, свойства выдаются в виде списка для каждого ресурса
&tplOdd   Имя чанка, выступающего в качестве шаблона для ресурсов с нечетным индексом (см. параметр idx
&tplFirst   Имя чанка, выступающего в качестве шаблона для первого ресурса
&tplLast   Имя чанка, выступающего в качестве шаблона для последнего ресурса
&tpl_N   Имя чанка, выступающего в качестве шаблона для N-ного ресурса, например &tpl_4=`tpl4th`
&tpl_nN   Имя чанка, выступающего в качестве шаблона для каждого N-ного ресурса, например шаблон &tpl_n4=`tpl4th` будет применен к каждому элементу, порядковый номер которого кратен 4 
&tplPath assets_path + «elements/chunks/» Дополнительный каталог для поиска чанков на основе файлов при использовании биндинга @FILE 
&outputSeparator \n Дополнительные строки для разделения каждого ресурса после шаблонизации
&toPlaceholder   Если установлен, присвоит результат в указанный плейсхолдер вместо вывода напрямую
&toSeparatePlaceholders   Если установлен, присвоит КАЖДОМУ результату отдельное имя плейсхолдера в виде суффикса из значения этого параметра и порядкового номера (начиная с 0) Добавлено в версии: 1.3.0

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

Параметр По умолчанию Описание
&parents ID текущего ресурса Список идентификаторов родительских ресурсов, разделенных запятыми. Используйте -1 для исключения родительских ресурсов. 
&resources   Список идентификаторов ресурсов, разделенных запятыми, для включения их в результат выборки. Префикс в виде минуса исключает ресурсы из результата выборки.
&depth 10 Целое число, указывающее глубину поиска для ресурсов от каждого из родителей.
&tvFilters  

Может использоваться для фильтрации ресурсов по определенным значениям переменных шаблона (TV). Они задаются как [(tvname)(operator)](value). Можно использовать несколько разделителей для объединения условий фильтра.

Подробнее о параметре &tvFilters

&sortby publishedon

Любое поле ресурса (за исключением переменных шаблона) для сортировки. Некоторые из общих полей для сортировки - это publishedon, menuindex, pagetitle и др., но смотрите документацию по ресурсам для всех полей. Укажите только имя поля, без использования синтаксиса тегов. Обратите внимание, что при использовании таких полей, как template, publishedby и подобных для сортировки, они будут сортироваться по сырым значениям, таким как ID шаблона или юзера, а не по их именам.

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

&sortby=`RAND()`

Начиная с версии 1.3.0 это также может быть JSON массив для сортировки по нескольким полям, например:

&sortby=`{"publishedon":"ASC","createdon":"DESC"}`

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

&sortby=`FIELD(modResource.id, 4,7,2,5,1 )`

Тоже самое возможно, если вы передадите список ID для сортировки в переменной шаблона, например:

&sortby=`FIELD(modResource.id,)`
&sortbyAlias   Псевдоним запроса для поля из sortby
&sortbyEscaped   Экранировать имя поля заданного в sortby
&sortdir DESC Порядок сортировки 
&sortbyTV   Переменная шаблона (Template Variable) для сортировки 
&sortdirTV DESC Порядок сортировки при использовании sortbyTV 
&sortbyTVType string Указывает тип данных сортировки по TV. Возможные значения: string, integer, decimal, datetime 
&limit 5 Ограничение количества возвращаемых ресурсов 
&offset 0 Смещение ресурсов для пропуска, которые возвращаются в соответствии с критериями 
&where   Выражение критериев в json-стиле для построения любых дополнительных условий. Смотрите ниже пример. Подробнее http: //rtfm.modx.com/display/xPDO20/xPDOQuery.where
&context текущий контекст В каком контексте следует искать.

Другие параметры

Параметр По умолчанию Описание
&showUnpublished 0 Если true, то будут показаны также ресурсы, которые не опубликованы. 
&showDeleted 0 Если true, то будут показаны ресурсы независимо от того, удалены они или нет. 
&showHidden 0 Если true, покажет ресурсы независимо от того, показываются они в меню или нет. 
&hideContainers 0 Если указан, то не будут показаны ресурсы, помеченные как контейнер (is_folder). 
&includeContent 0 Указывает, что содержание каждого ресурса должно возвращаться в результатах выборки. 
&includeTVs 0 Указывает, что значения переменных шаблона должны быть включены в набор свойств, доступных для каждого шаблона ресурса
&includeTVList   Дополнительный список разделенных запятыми имет переменных шаблона для явного включения в результат, если includeTVs установлен в 1 
&processTVs 0 Указывает, что переменные шаблона должны быть отрисованы так как они были бы представлены в ресурсе. Переменные шаблона должны быть включены для обработки (см. includeTVs/includeTVList). 
&processTVList   Дополнительный список имен переменных шаблона, разделенных запятыми, для явной обработки. Переменные шаблона, заданные здесь, должны быть включены через includeTVs/includeTVList 
&tvPrefix tv. Префикс для свойств в виде переменных шаблона.
&idx 1 Вы можете задать начало idx ресурсов, что представляет собой свойство, котороые увеличивается с каждым отрисованным ресурсом.
&first 1 Задает idx, который представляет собой первый ресурс.
&last количество ресурсов Задает idx, который представляет последний ресурс. 
&totalVar total Задает ключ плейсхолдера, устанавливаемого getResources для показа общего количества ресурсов, которые будут выбраны не учитывая значения limit
&debug false Если true, будет записывать sql-запросы в log MODX.

Дополнительные плейсхолдеры

[[+idx]] — порядковый номер выводимого ресурса. Увеличивается с каждой итерацией, начиная с 1 (или со значения, установленного параметром &idx)

Показ дополнительных полей (TV)

По умолчанию getResources не получает значения TV. Для их вывода надо включить следующие параметры:

&includeTVs=`1` &processTVs=`1`

В чанке с шаблоном, дполнительные поля выводятся следующим образом: [[+tv.my_tv]]. К названию поля добавляется префикс tv., его можно изменить с помощью параметра &tvPrefix.

Примеры

Вывод списка дочерних ресурсов текущего ресурса, используя чанк 'myRowTpl':

[[!getResources? &parents=`[[*id]]` &tpl=`myRowTpl`]]

Вывод всех дочерних ресурсов ресурса с ID '5', за исключением ресурса 10, используя чанк 'myRowTpl':

[[!getResources? &parents=`5` &resources=`-10` &tpl=`myRowTpl`]]

Вывод всех дочерних ресурсов ресурса с ID '5', за исключением текущего ресурса, используя чанк 'myRowTpl':

[[!getResources? &parents=`5` &resources=`-[[*id]]` &tpl=`myRowTpl`]]

Вывод всех дочерних ресурсов ресурса с ID '5' с сортировкой как в дереве ресурсов используя чанк 'myRowTpl':

[[!getResources? &parents=`5` &tpl=`myRowTpl` &sortby=`{"menuindex":"ASC"}`]]

Вывод только заданных ресурсов, используя чанк 'myRowTpl':

[[!getResources? &parents=`-1` &resources=`10,11,12` &tpl=`myRowTpl`]]

Вывод последних 5 опубликованных ресурсов, у которых родительский ресурс с ID '5', используя шаблон 'blogPost':

[[!getResources? &parents=`5` &limit=`5` &tpl=`blogPost` &includeContent=`1`]]

Вывод списка дочерних ресурсов текущего ресурса, основанного на шаблоне ресурсов:

[[!getResources? &parents=`[[*id]]` &where=`{"template:=":8}` &tpl=`myRowTpl`]]

Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1 или 2:

[[!getResources? &parents=`[[*id]]` &where=`{"template:=":1, "OR:template:=":2}` &tpl=`myRowTpl`]]

Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1, 2 или 3 (вы не можете использовать тот же ключ больше одного раза):

[[!getResources? &parents=`[[*id]]` &where=`{"template:IN":[ 1,2,3 ]}` &tpl=`myRowTpl`]]

Показ сообщения, когда ничего не найдено:

[[!getResources:default=`No results found`? &parents=`[[*id]]` &tpl=`myRowTpl`]]

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