Очень хотелось той же гибкости в оформлении, которую дает getResources при выводе списка ресурсов. Ну и getPage для пагинации использовать. В результате я взял getResources и слегка его переделал, чтобы он мог выводить список объектов любого класса (ему этот класс, конечно же, придется все-таки указать).
Получился сниппет getObjects Внимание: Велосипед (кошерное решение в UPD)
Покажу примеры, как я вывожу те или иные объекты, чтобы было понятно, что к чему.
Выводим список пользователей в какой-либо группе
[[!getPage? // С getPage работаем как обычно
&element=`getObjects` // Указываем наш сниппет
&objClass=`modUser` // Указываем класс объектов для вывода
&objects=`-1` // Админа в список не включаем
&parents=`8,9,10` // Можно указать одну группу, а можно несколько
&parentField=`primary_group` // У пользователей нет параметра parent
// зато есть primary_group
&tpl=`tpl.getObjects.users.row` // В шаблоне вывода обычные плейсхолдеры
// [[+id]], [[+username]]
]]
[[!+page.nav]]Выводим группы пользователей
[[!getPage?
&element=`getObjects`
&objClass=`modUserGroup` // Здесь еще проще - указываем лишь класс
&tpl=`tpl.getObjects.organizations.row`
&depth=`1`
&objects=`-1` // Ну и пропускаем группу Administrator
]]
[[!+page.nav]]Выводим объект пользовательского класса
[[!getPage?
&element=`getObjects`
&loadRehab=`1` // В коде сниппета подключится пакет для работы
&objClass=`Calls` // с классом Calls (строка 6)
&parentField=`org_id` // Для Calls используем поле org_id вместо parent
&parents=`8,9,10`
&tpl=`tpl.getCalls.row`
]]
[[!+page.nav]]Таким образом можно выводить объекты любого класса используя парсер для шаблонов вывода от getResources и довольно просто реализовать разбиение списка на страницы. G+UPD. bezumkin подсказывает, что есть нормальное решение Rowboat. Наши списки будут выводиться так:
Выводим список пользователей в какой-либо группе
[[!getPage?
&element=`Rowboat`
&table=`users`
&where=`{"primary_group:IN":"8,9,10","id:!=":"1"}`
&tpl=`tpl.getObjects.users.row`
]]
[[!+page.nav]]Выводим группы пользователей
[[!getPage?
&element=`Rowboat`
&table=`membergroup_names`
&where=`{"id:!=":"1"}`
&tpl=`tpl.getObjects.organizations.row`
]]
[[!+page.nav]]Выводим объект пользовательского класса
[[!getPage?
&element=`Rowboat`
&table=`calls`
&where=`{"org_id:IN":"8,9,10"}`
&tpl=`tpl.getCalls.row`
]]
[[!+page.nav]]Оригинал статьи community.modx-cms.ru/blog/tips_and_tricks/9053.html
Объектная
0 комментариев