Часто бывает необходимо сгруппировать объекты по какому-то определенному правилу, например собрать все документы, связанные общностью темы. Обычный способ решения этой задачи заключается в объединении всех подобных объектов внутри одной папки. Но это решение имеет существенный недостаток, заключающийся в том, что один и тот же объект может быть включен в несколько групп, каждая из которых образуется по уникальному условию общности.
Для решения подобных проблем в Plone введен специальный тип объектов — Коллекция. Этот тип, подобно типу Папка, является контейнерным типом, но объединяет в себе не сами объекты, а ссылки на них. Из-за такого способа объединения объектов этот тип часто называют Виртуальной папкой, поскольку его создание не зависит от структуры папок сайта и определяется только критериями отбора объектов. Можно рассматривать объект этого типа как поисковый индекс, образованный в результате запроса к содержимому сайта.
![]() | Внимание |
|---|---|
Следует особо отметить, что Коллекция на самом деле хранит не объекты, а только ссылки на объекты, и весь набор ссылок строится динамически при каждом обращении к ней в соответствии с указанными критериями отбора. |
![]() | Внимание |
|---|---|
Критерии отбора определяются на основе метаданных и категорий. Их можно разделить на простые, когда накладывается условие на один параметр отбора, и сложные, когда несколько параметров входят в логическое выражение. |
Определение критериев отбора производится через специальную форму, доступную через вкладку Критерий в меню управления объектами (см. Рис. 6.4). Эта вкладка появляется в меню после создания коллекции и ее выбора в качестве просматриваемого объекта.
Список доступных полей позволяет выбрать поле из числа доступных метаданных (см. Рис. 6.5) или определить поле Категории, определив в качестве критерия отбора принадлежность к одной или нескольким категориям.
Дополнительный список позволяет уточнить использование выбранного критерия. Так, при выборе критерия Категории в уточняющем списке можно выбрать значение Текст или Список значений.
После добавления критерия в форме появятся дополнительные поля, позволяющие определить значения каждого из критериев. На Рис. 6.6 показан пример сложного критерия, определяющего принадлежность объекта к определенной категории, дата создания которого попадает в настраиваемый диапазон дат.
Вернемся к примеру из раздела Разд. 6.1, Использование папок — напечатав в поле Значение слово student и не определив значений для критерия Дата создания мы получим в составе коллекции ссылки на все объекты, отнесенные к категории student.
Критерии можно отключать, сняв пометку в первом столбце возле его наименования. Панель Установить порядок сортировки позволяет установить способ сортировки элементов коллекции.
Из коллекций, подобно папкам, можно создавать сложные иерархические структуры. Просмотр этих структур производится через вкладку Подпапки. Добавление коллекции нижнего уровня производится выбором нужной коллекции и выбором ссылки Добавить коллекцию. Коллекция может быть также добавлена через копирование или вставку в разделе Подпапки. Таким образом копии коллекции могут быть в включены в структуру различных коллекций более высокого уровня.
![]() | Замечание |
|---|---|
Создав однажды коллекцию с достаточно сложным критерием, можно создавать ее копии и, включая или выключая соответствующие критерии, отбирать в эти копии различные наборы объектов. |