MODX Collections (коллекции)

MODX Revo

Collections (коллекции) — это пакет для MODX Revolution, который добавляет для ресурсов пользовательский класс CollectionContainer. В общем данный компонент предназначен для разгрузки дерева ресурсов, т.к. он скрывает показ дочерних ресурсов и организовывает их вывод в родительском объекте в табличном виде. Плюс в нашем случае, если блог на ресурсах, при добавлении дочернего ресурса у него выставляется шаблон категории, а при создании коллекции, можно задать нужный шаблон.

Установка

Устанавливается дополнение стандартно из основного репозитория MODX.

Создание коллекций

Для быстрого создания коллекции в дереве ресурсов щелкаем по «Website» (если хотите создать коллекцию в корне сайта), либо по ресурсу (внутри которого хотите создать коллекцию) правой кнопкой мыши, в появившемся окошке наведите мышку на пункт «Создать » и выбираем «Создать коллекцию здесь».

Так же вы можете создать обычный ресурс, а потом в настройках переключить его тип на коллекцию, см. далее.

Как превратить категорию ресурсов в коллекцию

Открываем категорию с ресурсами, переходим во вкладку «Настройки», меняем «Тип ресурса» на «Коллекция» и сохраняем.

Меняем тип ресурса

После сохранения, вы увидите дочерние ресурсы в виде сетки.

Вид коллекции по умолчанию

соответственно вид представления можно настроить.

Настройка внешнего вида

Изменение стандартного внешнего вида Blog

По умолчанию после установки Collections, уже есть внешний вид «Blog», давайте его отредактируем, для этого идем в «Пакеты» — «Виды коллекций».

Переходим в настройки коллекций

На открывшейся странице щелкаем по названию коллекции «Blog» правой кнопкой мыши и выбираем «Изменить вид».

Изменяем вид коллекции

Во вкладке «Настройки коллекции» устанавливаем для нее «Шаблон дочерних ресурсов по умолчанию» —  «Пост».

Задаем шаблон для дочерних ресурсов

Далее проматываем в низ, там вы увидите набор полей которые определяют вид коллекции.

набор полей которые определяют вид коллекции

Сюда можно добавлять новые поля и удалить не нужное. Давайте добавим TV поле с изображением статьи (img). Для этого щелкаем по кнопке «Добавить столбец», в сплывающем окне заполняем поля:

  • Заголовок: Изображение;
  • Название: tv_img (при указании TV-полей необходимо использовать префикс tv_);
  • Ширина: 30;
  • Положение: 0 (чтобы изображение было первым в табличке);
  • Редактор: пусто;
  • Рендерер: Collections.renderer.image;
  • Сниппет-рендерер: пусто;
  • Ставим галку на против пункта «Сортируемый» и выбираем тип сортировки «По умолчанию».

Сохраняем.

Добавляем столбец в коллекцию

Если у вас для изображений используется отдельный источник файлов, тогда в табличном у изображении вы увидите битые картинки.

Пустые картинки  в коллекции вместо изображений

Исправить это легко, для этого идем в системные настройки, в поиск по ключу вбиваем: collections.renderer_image_path у указываем путь до изображений (как в настройках источника).

Задаем путь до изображений

После чего картинки должны появиться, на всякий нажмите CTRL+F5 чтобы очистить кэш.

вид новой коллекции

Еще один пример настройки коллекции

Недавно мне подвернулась задача на одном из блогов, который использует коллекции вывести колонку Автора публикации статьи. Для этого идем в «Пакеты» -«Виды Коллекции», напротив коллекции жмем правой кнопкой мыши и выбираем «Изменить вид».

Далее переходим во вкладку «Настройка подборки» и жмем на кнопку «Добавить столбец».

Добавляем столбец в коллекцию

Откроется окно «Добавить новый столбец». Заполняем его:

  • Заголовок: Автор публикации (или Пользователь);
  • Название: createdby;
  • Ширина: 50;
  • Сниппет-рендерер: userfull;
  • Ставим галку на против пункта «Сортируемый» и выбираем тип сортировки «По умолчанию».

Добавление нового столбца

И создаем сам сниппет «userfull» со следующим содержимым:

$value = $modx->getOption('value', $scriptProperties, '');
if ($profile = $modx->getObject('modUserProfile', $value)) {
	return $profile->get('fullname');
} else {
	return '';
}

Получаем.

Результат

Документация

Справка по полям страницы «Изменить вид»

Поля, с помощью которых задаются общие настройки коллекции:

  • Название — имя коллекции.
  • Описание — поле, которое позволяет сохранить поясняющую информацию об назначении этой коллекции.
  • Задать как вид по умолчанию. Значение «Да» будет означать то, что данная коллекция будет устанавливаться в качестве вида дочерних ресурсов по умолчанию.
  • По умолчанию для шаблонов — указывает, что этот вид необходимо использовать по умолчанию при создании новой коллекции, если она имеет указанный 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 — выводит поле, содержащее изображение, в виде миниатюры.

Решение проблем с Collections и FAQ

Коллекции внутри коллекций

Коллекции внутри коллекций создавать нельзя. Вам нужно запаковывать в коллекции подкатегории (самая главная категория — должна быть обычным ресурсом.

Как вывести изображение загруженное в ресурс с помощью ms2gallery?

В настройках коллекции добавляете столбец для фото, в свойства отображения в поле «Сниппет-рендерер» ставите сниппет, к примеру:

<?php
$imgName = $modx->getOption('value', $scriptProperties, '');
$row = $modx->getOption('row', $scriptProperties, '');
$img = $modx->runSnippet('ms2gallery', array(
	'tpl' => 'collection-img',
	'limit' => '1',
    'resource'=> $row['id'],
));
return $img;

Где чанк collection-img имеет следующий код:

<img src="{$files[0].small}" class="img-responsive">

Отсортируйте таблицу по menuindex, что бы использовать drag and drop сортировку

Многие пользуются приложением Collections. И по умолчанию у него не работает drag and drop и когда вы пытаетесь поменять документы местами, то выдается уведомление — Отсортируйте таблицу по menuindex, что бы использовать drag and drop сортировку. Так вот сегодня коротенький урок о том как включить drag and drop в Collections. Делается это очень просто. Заходим во вкладку «Приложения» — «Виды Коллекций«. На открывшейся странице либо создаем новый вид коллекции, либо редактируем стандартный, для этого по нему нужно щелкнуть правой кнопкой мыши и выбрать «изменить вид«.

изменяем вид коллекции

Далее На вкладке общие настройке в «Поле сортировки» прописываем «menuindex» и выбираем «разрешить перетаскивание«.

MODX Collections - Сортируем таблицу по menuindex и разрешаем перетаскивание

Вот и все теперь, вы можете свободно перемещать документы в коллекции.

 

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 2 оценки, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Аноним

    Скажите, а возможно ли в Collection сделать фильтр, чтобы для каждого пользователя отображались только созданные им самим материалы?

    Ответить
    1. Голягин Алексей

      Скорее всего, вам нужно проделать что описано здесь https://bobsguides.com/user-specific-pages.html

      Ответить
  2. Александр Быковский

    Добрый день.
    А как быть если для разных коллекций разный источник файлов?

    Ответить
    1. Голягин Алексей

      Добрый день. А причем здесь collections и источники файлов?

      Ответить
      1. Александр Быковский

        >>>Исправить это легко, для этого идем в системные настройки, в поиск по ключу вбиваем: collections.renderer_image_path у указываем путь до изображений (как в настройках источника).

        Ответить