MODX. Каталоги с информацией и компонент Collections
Отредактировано: 01 Июня 2023
Collections — компонент для упорядочивания ресурсов, объединения их в коллекции. Удобен для создания блогов, новостных лент, галерей и других коллекций. Служит аналогом инфоблоков из системы Bitrix. Имеет множество преимуществ над Articles хотябы в том, что дочерние ресурсы можно спокойно переносить в обычное дерево ресурсов, и наоборот.
Компонент имеет множество настроек, все настроики производятся в "типах коллекций" (collection views) которые можно найти в меню "Приложения" (Extras). По умолчанию идет один тип настроек, которого хватит для большинства мелких сайтов, но, при необходимости, можно создавать неограниченное количество коллекций с разными настройками.
Создание коллекции и добавление ресурсов
Простейший вариант: коллекции создаются так же как и обычные ресурсы, только при выборе что же создать, надо нажать — коллекцию. Итак, правоклик по контексту Website => Создать (Create ) => Создать коллекцию здесь (Collection). Не забудьте, что компонент предварительно надо установить.
Далее, нажимаем на созданную коллекцию, и видим на экране пустой список дочерних ресурсов, с кнопкой «Создать дочерний ресурс» (Create child), которая создает ресурсы по аналогии с обычными.
Вариант похитрее: если ресурс уже создан, но появилась необходимость сделать из него коллекцию, идем на вкладку «Настройки» (Settings) ставим галку — контейнер. И в поле «Тип ресурса» (Resource Type) выбираем — «Коллекция» (Collection). После этих манипуляций у ресурса появится возможность создавать дочерние ресурсы.
Настройки коллекций
- Мультивыбор (Default for templates) — если коллекциями надо делать все ресурсы с определенными шаблонами;
- Размер страницы (Page size) — устанавливает количество строк таблицы при постраничном выводе;
- Поле сортировки (Sort field) — указывается поле для сортировки по умолчанию. Если установить menuindex, ресурсы можно будет перетаскивать;
- Разрешить массовые действия (Allow bulk actions) — добавляет флажки для выбора элементов, и разрешает массовые действия над выбраными элементами;
- Разрешить перетаскивание (Allow drag & drop) — включает возможность сортировки перетаскиванием (только если в поле сортировки проставлен параметр menuindex)
Таблица под настройками — список полей, которые будут отображаться в списке ресурсов.
Список полей
Столбцы:
- Заголовок — название, можно указывать кирилицей;
- Название — кодовый идентификатор поля. Чтобы использовать допонительное поле, надо указать приставку tv_;
- Скрытый — будет выводиться скрытым, т.е. будет подготавливаться, но чтобы вывести на экран, понадобиться кликнуть на заголовок таблицы списка и проставить галку напротив;
- Сортировка — указывает, можно ли сортировать по данному полю;
- Ширина — ширина столбца в пикселях;
- Редактор — формат редактирования поля в списке;
- Рендер — указывается имя сниппета с рендером для преобразования полей перед выводом в списке. Полезен для таких полей как изображения, migx и т.п.;
Например:
<?php $value = $modx->getOption('value', $scriptProperties, ''); return strtoupper($value);
Этот код преобразует все значения столбцов в верхний регистр.
- Снипет рендера — если для рендера надо использовать снипет;
- Положение — порядковый номер в списке;
- Тип сортировки — указание типа сортировки;
Некоторые варианты для поля Редактор
- textfield — текстовая строка;
- textarea — текстовое поле;
- numberfield — цифровое поле;
- modx-combo-boolean — значения да/нет;
- {"xtype":"numberfield","allowDecimals":false,"allowNegative":false} — Ext Js поддерживающий разные xtype.
XTYPE для Сollections
- htmleditor — визуальный редактор;
- numberfield — числовое поле;
- allowDecimals — дробные числа
- allowNegative — отрицательные числа
- minValue — минимальное значение
- maxValue — максимальное значение
- checkboxgroup — группа чекбоксов;
- {"xtype":"modx-combo-user","renderer":true,"fields": ["fullname","username","id"],"displayField": "fullname","baseParams": {"action": "security/user/getlist","usergroup":2}} — выпадающий список с пользователями.
Некоторые варианты для поля Рендер
- Collections.renderer.pagetitleWithButtons — заголовок страницы с кнопками редактирования, просмотра и т.п.
- Collections.renderer.datetimeTwoLines — дата и время в 2 строки. Формат устанавливается в настройках системы
- Collections.renderer.datetime — дата и время в 1 строку. Формат устанавливается в настройках системы
- Collections.renderer.image — изображение
- Collections.renderer.pagetitle — заголовок страницы обернутый в h2, с сылкой на редактирование
- Collections.renderer.pagetitleLink — заголовок страницы, с сылкой на редактирование
- Collections.renderer.qtip — при наведении мыши всплывает подсказка со значением (используется для длинных значений в поле)
- Collections.renderer.boolean — чекбокс
Создание собственного рендера
Собственные функции рендера можно создавать используя JS и CSS файлы, указав url до них в настройках системы
Подборки (Selections)
С 3 версии компонента появился новый вид ресурсов «подборки». Подборки используются в том случае, если вам необходим раздел состоящий из ресурсов уже существующих на сайте, для избегания их дублирования. По своей сути, подборки — это каталог ссылок на существующие ресурсы, расположенные в каком-либо другом месте. Для создания подборки при создании ресурса надо выбрать соответствующий пункт — подборка (selection).
Для вызова ресурсов состоящих в подборке используется сниппет getSelection:
[[getSelections?
&selections=`[[*id]]`
&tpl=`myTplChunk`
]]
getSelections это сниппет-обёртка для getResources
, поэтому он зависит от установленного getResources, и ему доступны все свойства от
getResources
. Помимо этого у getSelections есть собственные свойства:
- &selections — ID Ресурса контейнера
Selections
- &getResourcesSnippet — при желании можно вызвать другой сниппет листинга, но в этом случае не исключается вероятность возникновения ошибок, т.к. сниппет не тестировался с другими компонентами.
Использование getSelections с pdoResources:
[[getSelections?
&selections=`[[*id]]`
&tpl=`myTplChunk`
&getResourcesSnippet=`pdoResources`
]]
Пока проблем при их совместном использовании замечено не было, это вполне рабочая конструкция.
Тонкости
ID ресурса по умолчанию — скрытый. Чтобы узнать его, надо в списке ресурсов навести на заголовок таблицы, должна появиться стрелка, нажав на которую надо выбрать пункт «столбцы», и поставить галку напротив пункта ID.