Jump to main content Jump to doc navigation

What is renderResources

Универсальный сниппет для вывода коллекции ресурсов.

Requirements

  • MODX Revolution 2.1.0 или новее
  • PHP 5.1.2 или новее

History

renderResources написал Jason Coward (opengeek), релиз 19 марта 2012 года. Разработка и баги на Github.

Download

Скачайте через менеджер MODX Revolution в Package Management или из MODX Extras Repository: https://modx.com/extras/package/renderresources

Это не замена Ditto, а альтернативный компонент для части задач специализированных компонентов: Ditto, Wayfinder, Breadcrumbs. По сути всё, что выводит свойства списка ресурсов (ранее Documents в MODX Evolution).

Usage

Сниппет renderResources вызывают так:

[[renderResources]]

Без свойства &tpl выводится результат каждого ресурса напрямую.

renderResources нельзя использовать с бинарными Content Types или с ресурсами modSymLink и modWebLink. Они автоматически исключаются из выборки.

Available Properties

Templating Properties

Name Description Default Value
tpl Имя чанка-обёртки для вывода ресурса. Без него вывод ресурса возвращается напрямую.
tplOdd Имя чанка для ресурсов с нечётным idx (см. idx)
tplFirst Имя чанка для первого ресурса
tplLast Имя чанка для последнего ресурса
tpl_N Имя чанка для N-го ресурса, например &tpl_4=tpl4th
tpl_nN Имя чанка для каждого N-го ресурса, например &tpl_n4=tpl4th для каждого кратного 4
outputSeparator Необязательная строка-разделитель между экземплярами tpl "\n"
toPlaceholder Если задано, результат помещается в этот плейсхолдер вместо прямого вывода.
toSeparatePlaceholders Если задано, каждый результат в отдельный плейсхолдер с этим именем и порядковым номером (с 0).

Selection Properties

Name Description
parents Список id родителей через запятую. -1 игнорирует parents при указании resources. Default Value: current Resource id
resources Список id для включения. Префикс "-" исключает ресурс.
depth Глубина поиска ресурсов от каждого родителя. Default Value: 10
publishedon
sortbyAlias Query alias для поля sortby
sortbyEscaped Экранирует имя поля в sortby
sortdir Направление сортировки. Default Value: DESC
sortbyTV Template Variable для сортировки
sortdirTV Направление сортировки при sortbyTV. Default Value: DESC
sortbyTVType Тип данных sortby TV: string, integer, decimal, datetime. Default Value: string
limit Лимит числа ресурсов. Default Value: 5
offset Смещение ресурсов в результате. Default Value: 0
where JSON-выражение дополнительных where-условий. Пример ниже. См. xpdoquery.where
context Контекст для поиска. По умолчанию текущий Context.

tvFilters

Фильтрация ресурсов по значениям TV. Формат [(tvname)(operator)](value). Два разделителя для комбинации условий.

"OR" через два символа pipe. OR выбирает ресурсы с одним из указанных значений TV.

mytv==somevalue||mytv==othervalue

"AND" через запятую. Все условия должны выполняться.

mytv==somevalue,othertv==othervalue

Для сложной фильтрации можно группировать. Сначала разделение по OR (||), затем по AND (,). Пример:

mytv==foo||mytv==bar,bartv==3||bartv==1

Фильтр ресурсов по одному из условий:

  • mytv LIKE foo, или:
  • mytv LIKE bar AND bartv LIKE 3, или:
  • bartv LIKE 1 Примеры выше ищут точные значения. Можно использовать % как wildcard. Например:
mytv==%a%

Ресурсы с "a" в значении mytv.

mytv==a%

Значение mytv начинается с a.

mytv==%a

Значение mytv заканчивается на a.

Комбинируйте с OR (||) и AND (,).

Функция смотрит на сырое значение TV конкретного ресурса. Значение явно задано для ресурса и не обработано output type TV. Для "autotag" tv сырое значение это список через запятую, не теги как в менеджере.

Available filter operators:

Операторы сравнения для условий фильтра. При многих операторах числовые значения автоматически приводят TV к numeric перед сравнением. Список операторов:

Filter Operator SQL Operator
!== != Yes
<> <> Yes
== LIKE No
!= NOT LIKE No
<< < Yes
<= <= Yes
=< =< Yes
>> > Yes
>= >= Yes
=> => Yes
sortby Any Resource Field (кроме Template Variables) для сортировки. Частые поля: publishedon, menuindex, pagetitle и др., см. документацию Resources. Указывайте только имя поля, не tag syntax. При sortby template, publishedby и т.п. сортировка по raw значениям, ID шаблона или пользователя, не по именам.

Случайная сортировка через RAND():

&sortby=`RAND()`

Или JSON массив для нескольких полей:

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

Сортировка в заданном порядке по списку id:

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

То же с ID в template variable:

&sortby=`FIELD(modResource.id,[[*templateVariable]])`

Other Properties

Name Description Default Value
showUnpublished Если true, показывает неопубликованные ресурсы. 0
showDeleted Если true, показывает удалённые ресурсы. 0
showHidden Если true, показывает ресурсы, скрытые в меню. 0
hideContainers Если задано, не показывает ресурсы-контейнеры (is_folder). 0
idx Начальный idx ресурсов, увеличивается при каждом рендере 1
first idx первого ресурса 1
last idx последнего ресурса. По умолчанию число ресурсов + first - 1
totalVar Ключ плейсхолдера с общим числом ресурсов без учёта limit. total
debug Если true, SQL-запрос пишется в MODX log. false

Examples

Список дочерних ресурсов текущего ресурса через чанк 'myRowTpl':

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

Все ресурсы под ID '5', кроме 10, через 'myRowTpl':

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

Только указанные ресурсы через 'myRowTpl':

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

Топ 5 последних опубликованных ресурсов под ID '5', tpl 'blogPost':

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

Дочерние ресурсы текущего по шаблону ресурса:

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

Дочерние ресурсы, template ID 1 или 2:

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

Дочерние ресурсы, template ID 1, 2 или 3 (один ключ нельзя повторять):

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

Сообщение при пустом результате (аналог "empty" в Ditto):

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

Using getPage for Pagination

С getPage renderResources даёт гибкую пагинацию.

Examples

Первые 10 ресурсов по publishedon под ID 17, глубина 2, tpl 'blogListPost', с TV и content:

[[!getPage?
   &elementClass=`modSnippet`
   &element=`renderResources`

   &parents=`17`
   &depth=`2`
   &limit=`10`
   &pageVarKey=`page`

   &tpl=`blogListPost`
]]
<div class="paging">
<ul class="pageList">
  [[!+page.nav]]
</ul>
</div>

и чанк blogListPost:

<div class="blogPost">
  [[+output]]
  <div class="clear"></div>
</div>
<hr/>

Troubleshooting

Ничего не выводится! Установлен ли renderResources?

See Also

Для свойств ресурсов, а не полного вывода, используйте getResources. Для одного поля чужого ресурса попробуйте getResourceField.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more