Введение
ПРИМЕЧАНИЕ: Это вид всех страниц руководства удобный для печати. Постраничное представление доступно здесь, если Вам так удобнее.
1. Что такое Архетипы?
Преимущества использования Архетипов в сравнении с контент-типами CMF:
-
автоматическая генерация форм и видов
-
библиотека типов полей, виджетов форм и валидаторов полей
-
возможность определения собственных полей, виджетов и валидаторов
-
автоматические преобразования для «rich content»
-
встроенная система ссылок, которая дает возможность связывания двух объектов с помощью отношения.
Начиная с Plone 2.1 Архетипы де-факто являются основным способом создания новых типов контента и используются в большинстве дополнительных продуктов.
2. Схема Архетипа
Архетипы предоставляют прозрачную среду для хранения атрибутов объектов контента. Эта среда состоит из Полей хранимых в контейнерах называемых Схема. Поля — это специализированные классы Python, которые позволяют хранить и осуществлять доступ к данным ассоциированным с объектом.
Поля предоставляют новую функциональность: есть специализированные типы полей для строк, списков строк, целых, чисел с плавающей точкой и т. д., что позволяет манипулировать полями по-разному, в зависимости от хранимого типа данных.
Определения
Давайте определим часто используемые термины:
Поле (Field)— экземпляр класс Field определенного в Схеме
Схема (Schema)— конейнер, который используется для хранения полей
Схемата (Schemata) — именованная группа полей. Одна схема может содержать несколько схемат.
AT — аббревиатура для Архетипов
Поля, Классы и Объекты
Поля Архетипов — это объекты Python, содержащиеся в схеме. Поле определяется один раз для класса содержимого. Единственный экземпляр поля используется для каждого экземпляра класса. Следовательно, отношение между экземплярами Поля и классами контента можно определить следующим образом: «экземпляр поля принадлежит только одному классу». Однако, класс может содержать много разных экземпляров полей. Более того, каждый экземпляр AT класса использует единый набор полей. AT объекты сами по себе не содержат уникальных полей.
При старте Zope в процессе инициализации продукта Архетипы считывают схемы зарегистрированных классов и автоматически генерирует методы для чтения (accessor) и изменения (mutator) каждого из объявленых полей.
Шаблоны схемы
Архетипы включают в себя три шаблона схем:
- BaseSchema определяет обычный тип контента
- BaseFolderSchema определяет тип контента ведущий себя как папка (объект может содержать другие объекты)
- BaseBTreeFolderSchema используется для папок, которые должны манипулировать сотнями или тысячами объектов (может даже и миллионами)
Все три типа схем включают в себя id и title, а также стандартный набор полей метаданных Dublin Core.
Изменение полей существующей схемы
Изменение существующего поля схемы возможно с помощью следующего синтаксиса:
schema['<field_name>'].attribute = value
Например, чтобы изменить название виджета поля description (уже доступного в BaseSchema), вы можете написать (в своем собственном определении схемы на основе BaseSchema):
schema['description'].widget.label = u'Summary'
Поля схемы упорядочены и обычно первые поля показываются первыми в формах добавления и редактирования контента. Если нужно изменить порядок полей в схеме, используйте метод moveField:
- Поместить
поле до другого поля:
schema.moveField('<field_to_move>', before='<field_to_place_it_before>') - Поместить поле после
другого поля:
schema.moveField('<field_to_move>', after='<field_to_place_it_after>') - Поместить поле наверх
схемы:
schema.moveField('<field_to_move>', pos='top') - Поместить поле вниз
схемы:
schema.moveField('<field_to_move>', pos='bottom') - Переместить поле в
указанную позицию:
schema.moveField('<field_to_move>', pos=0)
3. Что такое ATContentTypes?
ATContentTypes — это продукт ядра Plone, который поставляет базовые контент-типы (включен в ядро в Plone 2.1 и выше).
Одно из основных изменений в Plone 2.1 было то, что базовые контент-типы (Page, Image и т.д.) были основаны на Архетипах вместо типов CMF. Новые базовые типы были определены в продукте ATContentTypes.
ATContentTypes предоставляет некоторое количество базовых классов и инструментов, которые обеспечивают общее поведение Plone. В частности, он включает в себя поддержку меню «display» и меню «more» и ограничения для меню «add item».
Вы можете использовать базовые классы ATContentTypes и инструменты в своих собственных продуктах. Руководство по RichDocument охватывает базовые техники и возможно его изучением стоит продолжить обучение после прочтения данного руководства.

