Очень хотелось той же гибкости в оформлении, которую дает 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 комментариев