Для работоспособности, приведённого ниже примера каталога для сайта на CMS MODx, необходимо установить плагин PHx
[248x340]Этот пример позволяет формировать структуру каталога автоматически, без какого либо участия со стороны администратора сайта. Редакторам остаётся лишь наполнить каталог добавляя папки ( дочерние ресурсы контейнеры) или простые документы ( дочерние ресурсы) .
Так как это решение базируется на ditto, то совсем не трудно развить этот пример до чего нибудь более интересного, например добавить теги или фильтрацию.
1) Создаём папку в дереве документов modx ( контейнер документов ), где у нас будет находиться каталог
2) Создаём шаблон для отображения каталога и для этого шаблона создаём две переменные ( tv )
cat - тип текст , значение по умолчанию - @CHUNK catalog
catimage - тип image ( поле для ввода пути к изображению ) , визуальный компонент- image.
3) создаём чанк catalog
[*isfolder:is=`1`:then=`
<div class="catalog">[!Ditto? id=`cat[*id*]` &parent=`[*id*]` &display=`all` &tpl=`catalog_tpl` &filter=`isfolder,1,1` &noResults=`{{ditto_empty}}` &sortBy=`menuindex` &sortDir=`ASC`!]</div>
<div class="catdocs">
[!Ditto? id=`doc[*id*]` &parent=`[*id*]` &paginate=`1` &display=`all` &tpl=`catalog_content_tpl` &filter=`isfolder,1,2` &noResults=`{{ditto_empty}}` &sortBy=`menuindex` &sortDir=`ASC`!]
</div>
`*]
Содержимое чанка выполняется если текущий документ папка (текущий ресурс - контейнер). &noResults=`{{ditto_empty}}
` - чанк из которого берётся содержимое в случае если не найдены дочерние документы. Можно обойтись пробелом. Первый запрос выводит только папки , второй только документы в текущей папке. То есть вначале - каталог , ниже содержимое категории. 4) Выводим картинку и название категории, ниже список подкатегорий. Cоздаём чанк catalog_tpl
Выводим картинку и название категории, ниже список подкатегорий. 5) Формируем вывод подкатегорий . Создаём чанк subcatalog_tpl
6) Создаём чанк catalog_content_tpl
7) Добавляем CSS
В шаблон каталога вставляем вывод TV - [*cat*]
Пример того что получилось Основное достоинство данного решения - автоматическое формирование всей структуры каталога, просто добавляем дочерние документы и папки в общее дерево документов modx. Шаблон и переменные наследуются автоматически. Для картинок можно прикрутить directresize.
Чтобы вывести эту конструкцию на страницу вставляем вывод TV например так.
<body>
[*cat*]
</body>
Но лучше так: