MODX. getResources компонент для вывода ресурсов
Отредактировано: 05 Ноября 2018
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). Можно использовать несколько разделителей для объединения условий фильтра. |
|
&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`]]
Здравствуйте!
Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи.