Отображение ресурсов в виде сетки с помощью Collections в MODX
Урок, в котором познакомимся с дополнением CMS MODX Revo Collections.
Назначение и основные принципы работы с MODX-дополнением Collections
Collections (коллекции) - это компонент для CMS MODX Revolution, который скрывает показ дочерних ресурсов в дереве админки и организовывает их вывод в родительском объекте посредством таблицы. Другими словами он позволяет перевести стандартное представление дочерних ресурсов в табличный вид.
Осуществляет это действие компонент Collection только для тех родительских ресурсов, у которых в качестве типа установлено значение "Коллекция". Выставление данного значения осуществляется на вкладке "Настройки" из раскрывающего списка "Тип ресурса".

После этого, ресурс станет коллекцией, и его дочерние элементы будут отображаться уже не в дереве, а в нём, посредством таблицы на соответствующей вкладке.

В табличном представлении ресурсы не только удобно просматривать, но и управлять ими. Это связано с тем, что в таблице ресурс (строку) можно изобразить посредством любых данных, а не только с помощью заголовка, т.е. так, как это выполнено в дереве ресурсов.
Настройка представления коллекции дочерних ресурсов (таблицы) осуществляется на странице "Изменить вид". На этой странице можно не только настроить внешний вид таблицы (посредством создания столбцов, которые будут связаны с основными или TV полями ресурса), но и многие другие параметры.

Просмотр существующих коллекций или создание новых осуществляется на странице "Виды коллекций" (в главном меню выбрать Приложения -> Виды коллекций).

Назначение ресурсу необходимого вида коллекции осуществляется посредством его выбора из раскрывающего списка "Виды Коллекции", расположенной на вкладке "Настройки" в разделе "Коллекции".

Компонент Collections позволяет также организовать иерархические коллекции. Другими словами он поддерживает вложенность, т.е. позволяет распологать внутри одной коллекции другую. В такой структуре коллекции, имеющие в своём составе другие коллекции (дочерние), будут отображены в дереве уже по обычным правилам, и иметь стандартное управление.

Ещё одно достоинство компонента MODX Revolution Collections, как уже было отмечено выше, связано с тем, что он не отображает дочерние ресурсы в дереве админки. Это свойство компонента Collections позволяет не только очень сильно разгрузить дерево ресурсов, но и увеличить быстродействие админки в целом. Особенно это характерно для проектов насчитывающих очень большое количество ресурсов.
Кроме этого, дополнение Collection поддерживает режим Drag'n'Drop, который позволяет добавить в коллекцию ресурс, не имеющий детей, посредством простого перетаскивания.
Что же касается области применения, то дополнение Collection предназначено для более удобного представления, создания и редактирования однотипных ресурсов. Его, например, можно использовать для представления на сайте новостей, статей, услуг, видеоматериалов или любой другой информации.
Создание табличного представления дочерних ресурсов
Рассмотрим основные этапы, которые необходимо выполнить для того, чтобы представить в админке дочерние ресурсы посредством таблицы. Данный алгоритм выполним для ресурсов, которые используются на сайте для представления видеоматериалов.
Но перед тем как приступать к работе с компонентом Collections его нужно сначала установить в систему MODX Revo.Узнать, как осуществляется процесс установки компонентов (плагинов) в MODX Revolution можно в статье "Работа с менеджером пакетов".
Основные шаги:
1. Создание новой коллекции для представления дочерних ресурсов в виде таблицы. Данный шаг выполняется на странице "Виды коллекций" (Приложения -> Виды коллекций). На этой странице отображаются все существующие коллекции компонента Collections. По умолчанию после установки уже доступна (подготовлена для использования) коллекция для статей блога под названием "Blog". Создание новой коллекции осуществляется с помощью кнопки "Новый вид". Например, создадим коллекцию "Видеоматериалы".
2. Настройка коллекции "Видеоматериалы". Осуществляется эта операция на странице "Изменить вид". На этой странице осуществляется как настройка общих параметров, так и таблицы, посредством которой будут выводиться и управляться дочерние ресурсы.
В качестве значений основных параметров укажем следующие значения:
- название: видеоматериалы;
- описание: коллекция для представления видеоматериалов на сайте (дата публикации, картинка к уроку, название видео, продолжительность видео);
- задать как вид по умолчанию: нет;
- размер страницы: 10;
- поле сортировки: publishedon.
- направление сортировки: По возрастанию.
Настройку столбцов, которые будут использоваться для формирования таблицы, произведём в нижней части страницы "Изменить вид".
Заголовок | Название | Ширина | Рендерер |
---|---|---|---|
id (скрытый) | id | 20 | |
Дата публикации | publishedon | 20 | Collections.renderer.datetimeTwoLines |
Изображение | tv_imageVideo | 15 | Collections.renderer.image |
Название | pagetitle | 100 | Collections.renderer.pagetitleWithButtons |
Длительность | tv_durationVideo | 20 |
При указании TV-полей необходимо использовать префикс tv_
.
3. Установка созданной коллекции необходимым родительским ресурсам. Осуществляется посредством выполнения 2 шагов:
- Перейти на вкладку "Настройки" и выбрать из раскрывающего списка "Тип ресурса" пункт "Коллекция".
- На вкладке "Настройки" в разделе "Коллекции" выбрать из раскрывающего списка "Вид коллекции" необходимый вид (в данном случае "Видеоматериалы").
Справка по полям страницы "Изменить вид"
Поля, с помощью которых задаются общие настройки коллекции:
- Название - имя коллекции.
- Описание - поле, которое позволяет сохранить поясняющую информацию об назначении этой коллекции.
- Задать как вид по умолчанию. Значение "Да" будет означать то, что данная коллекция будет устанавливаться в качестве вида дочерних ресурсов по умолчанию.
- По умолчанию для шаблонов - указывает, что этот вид необходимо использовать по умолчанию при создании новой коллекции, если она имеет указанный MODX шаблон. При необходимости вид коллекции можно изменить. Осуществляется это посредством раскрывающего списка, расположенного на вкладке ресурса "Настройки" в секции "Коллекции".
- Поле сортировки - указывает имя поля, которое будет по умолчанию определять порядок вывода (сортировку) записей (ресурсов) таблицы.
- Направление сортировки - задаёт направление сортировки по умолчанию.
- Размер страницы (при пагинации) - определяет, какое количество дочерних ресурсов может быть выведено на одной странице.
- Разрешить массовые действия - добавляет в таблицу флажки для множественного выбора ресурсов и массовые действия, которые можно применить к этому выбору.
- Разрешить перетаскивание - позволяет помещать ресурсы, не имеющие детей, в коллекцию, путём их перетаскивания с помощью мыши.
- Место расположения контента - позиция, в которой необходимо располагать стандартное поле ресурса
content
. - Надпись вкладки - настройка названия вкладки, в которой будут отображаться дочерние ресурсы.
- Пункты контекстного меню - название элементов, которые необходимо отобразить в контекстном меню (вызывается контекстное меню посредством нажатия правой кнопки мыши в области принадлежащей таблицы).
- Кнопки - список, содержащий названия кнопок, которые необходимо отобразить рядом с заголовком ресурса (если используется соответствующий ренедерер).
Элементы, посредством которых задаются настройки коллекции:
- Выбор типа ресурса – добавить к кнопке "Создать дочерний ресурс" выпадающий список, с помощью которого можно выбрать тип создаваемого ресурса.
- Тип дочерних ресурсов по умолчанию - устанавливает, какой тип ресурса использовать по умолчанию при создании дочерних ресурсов.
- Шаблон дочерних ресурсов по умолчанию - указывает, какой шаблон необходимо устанавливать дочерним ресурсам во время их создания по умолчанию.
- Надпись кнопки создания дочерних ресурсов - задание необходимой надписи кнопки "Создать дочерний ресурс".
- Разрешённые типы ресурсов - указывает, какие типы ресурсов (через запятую) можно создавать с помощью выпадающего списка кнопки "Создать дочерний ресурс", если параметр "Выбор типа ресурса" установлен в положение "Да".
Название элементов, которые используются при создании столбцов таблицы:
- Заголовок (строка или ключ переменной словаря MODX) - название колонки в таблице.
- Название - имя поля ресурса из modResource, TV переменная (префикс
tv_
, имя TV не должно содержать точку), или любой псевдоним Tagger (префиксtagger_
). - Скрытый. Если установить переключатель в положение "Да", то этот столбец не будет отображаться в таблице.
- Сортировка. Если перевести данный параметр в состояние "Да", то пользователю будет предоставлена возможность сортировки таблицы в соответствии со значениями этого столбца.
- Ширина - ширина столбца.
- Редактор - (строка) Xtype или (объект) JSON валидный редактор, с помощью которого пользователь сможет редактировать данные прямо в таблице.
- Рендерер - имя функции, которая будет использоваться для визуального отображения данных поля в ячейке таблицы.
- Позиция - порядковый номер столбца в таблице.
В качестве редакторов таблицы может использоваться любой корректный Xtype (строка) или объект JSON.
По умолчанию доступны следующие виды редакторов:
- textfield (для текстовых полей).
- textarea (для текстовых областей).
- modx-combo-boolean (для установки логического значения "Да" или "Нет").
- numberfield или
{"type": "number field", "allowDecimals": false, "allowNegative": false}
(для числовых полей).
Рендереры (функции), посредством которых осуществляется представление данных дочерних ресурсов в полях таблицы:
- this.rendYesNo - Да/Нет (1/0), используется для вывода логических значений.
- Collections.renderer.qtip - отображает значения поля в виде подсказки (при наведении). Обычно используется для вывода полей, содержащих большое количество символов.
- Collections.renderer.pagetitleWithButtons - заголовок (pagetitle) ресурса (в h2 элементе) со ссылкой "Редактирование" и кнопками для обновления (update), просмотра (view), удаления (delete), публикации (publish).
- Collections.renderer.pagetitle - заголовок (pagetitle) ресурса (в h2 элементе) со ссылкой "Редактирование".
- Collections.renderer.pagetitleLink - заголовок (pagetitle) ресурса со ссылкой "Редактирование" (текст заголовка меньше чем
h2
). - Collections.renderer.datetimeTwoLines - выводит поле, содержащее дату и время в 2 строки. На первой строке отображает дату, а на второй - время. Отображение даты и времени форматируется в соответствии с системными настройками MODX Revolution.
- Collections.renderer.datetime - выводит дату и время на одной строке. Отображение даты и времени форматируется в соответствии с системными настройками MODX Revolution.
- Collections.renderer.image - выводит поле, содержащее изображение, в виде миниатюры.
тоесть название созданной коллекции отображается как новость
Спасибо
Не могу понять, как редактировать выводимые данные ресурса прямо из таблицы? Что бы не заходить внутрь. Например, изменить заголовок по двойному клику на него, или по нажатию на кнопку.
Сейчас, любое редактирование перебрасывает на страницу дочернего ресурса, и преследуемая цель по редактированию не заходя на страницу ресурса, не реализуется
Есть ли информация как изменить форму быстрого создания ресурса?
Скрин: prntscr.com/p53y7u
Скрин настроек вида коллекции: prntscr.com/p5401o
at encodeString (ext-all.js:21)
at doEncode (ext-all.js:21)
at doEncode (ext-all.js:21)
at doEncode (ext-all.js:21)
at doEncode (ext-all.js:21)
at doEncode (ext-all.js:21)
at doEncode (ext-all.js:21)
at Object.encode (ext-all.js:21)
at encodeArray (ext-all.js:21)
at doEncode (ext-all.js:21)
скрин: prntscr.com/p6st51
Чанк collection-img
А именно: есть тв-поле, которое рендерится в таблицу коллекции и хочется сделать возможность фильтровать по этому значению( так как это тв поле имеет фиксированные 4 значения ), но по дефолту можно фильтровать только — опубликованные/снятые с публикации/ удаленные. скрин для уточнения ниже
Не выводит изображение.
Скрин:
Настройки:
url картинки выводится без site_name.ru/…
У изображений свой Источник файлов.
В чем может быть проблема?
Системные настройки → collections
Там есть Путь к изображению визуализации с ключем collections.renderer_image_path и прописываю ему значение baseUrl из медиа источника
Но после этого вообще скрылись все ресурсы в коллекции. В чем может быть причина?
Точней будет так: «Или любой псевдоним (alias) ГРУППЫ Tagger`a»
А как вывести на сайт коллекцию?
Например, вывести pagetitle ресурсов можно с помощью pdoResources так (в parents указываете родительский id ресурса):
Единственно, немного вначале запутался, не мог найти где искать кнопку «Изменить вид».
Нашел потом в списке видов коллекций на виде нужно нажать правой кнопкой мыши и уже там выбрать этот пункт.