6.3. Коллекции

6.3.1. Применение коллекций

Часто бывает необходимо сгруппировать объекты по какому-то определенному правилу, например собрать все документы, связанные общностью темы. Обычный способ решения этой задачи заключается в объединении всех подобных объектов внутри одной папки. Но это решение имеет существенный недостаток, заключающийся в том, что один и тот же объект может быть включен в несколько групп, каждая из которых образуется по уникальному условию общности.

Для решения подобных проблем в Plone введен специальный тип объектов — Коллекция. Этот тип, подобно типу Папка, является контейнерным типом, но объединяет в себе не сами объекты, а ссылки на них. Из-за такого способа объединения объектов этот тип часто называют Виртуальной папкой, поскольку его создание не зависит от структуры папок сайта и определяется только критериями отбора объектов. Можно рассматривать объект этого типа как поисковый индекс, образованный в результате запроса к содержимому сайта.

[Внимание]Внимание

Следует особо отметить, что Коллекция на самом деле хранит не объекты, а только ссылки на объекты, и весь набор ссылок строится динамически при каждом обращении к ней в соответствии с указанными критериями отбора.

6.3.2. Критерии отбора

[Внимание]Внимание

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

Определение критериев отбора производится через специальную форму, доступную через вкладку Критерий в меню управления объектами (см. Рис. 6.4). Эта вкладка появляется в меню после создания коллекции и ее выбора в качестве просматриваемого объекта.

Определение критериев отбора

Рисунок 6.4. Определение критериев отбора

Список доступных полей позволяет выбрать поле из числа доступных метаданных (см. Рис. 6.5) или определить поле Категории, определив в качестве критерия отбора принадлежность к одной или нескольким категориям.

Доступные поля для критерия отбора

Рисунок 6.5. Доступные поля для критерия отбора

Дополнительный список позволяет уточнить использование выбранного критерия. Так, при выборе критерия Категории в уточняющем списке можно выбрать значение Текст или Список значений.

После добавления критерия в форме появятся дополнительные поля, позволяющие определить значения каждого из критериев. На Рис. 6.6 показан пример сложного критерия, определяющего принадлежность объекта к определенной категории, дата создания которого попадает в настраиваемый диапазон дат.

Определение значений критериев отбора

Рисунок 6.6. Определение значений критериев отбора

Вернемся к примеру из раздела Разд. 6.1, Использование папок — напечатав в поле Значение слово student и не определив значений для критерия Дата создания мы получим в составе коллекции ссылки на все объекты, отнесенные к категории student.

Критерии можно отключать, сняв пометку в первом столбце возле его наименования. Панель Установить порядок сортировки позволяет установить способ сортировки элементов коллекции.

6.3.3. Создание структуры коллекций

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

[Замечание]Замечание

Создав однажды коллекцию с достаточно сложным критерием, можно создавать ее копии и, включая или выключая соответствующие критерии, отбирать в эти копии различные наборы объектов.