Views
UsingPlone
Изучение Plone
Автор: "Кашкин Михаил":[xen]? (Ключевые Решения)
Архитектура Plone
Plone - это система публикаций написанная, на языке программирования python и использующая в основе сервер приложений Zope. Если быть точным, то иерархия взаимосвязи будет выглядеть так:
---------------
| Plone |
---------------
|
---------------
| CMF |
---------------
|
---------------
| Zope |
---------------
- Есть язык программирования python, на котором написан сервер приложений Zope.
- Для Zope был написан набор библиотек Content Management Framework (CMF, система управления контентом).
- Plone является красивым и удобным расширением для CMF. Хотя кроме него есть еще несколько подобных проектов.
Таким образом, все преимущества Plone растут из CMF/Zope, которые, в свою очередь, используют потенциал python.
hint: На python написано несколько прекрасных серверов приложений. Собственно почти все проекты, которые пишутся на python "отличаются умом". Причина, наверное, в том, что этот язык заставляет думать.
В Zope 2.x все данные хранятся в ZODB - объектно-ориентированная база данных Zope.
Внутреннее устройство Plone
Очень грубо можно разделить на 3 части:
- Логика. За логику отвечают специальные наборы инструментов (не уверен, что это правильный перевод Portal Tools).
- Дизайн. То как выглядит сайт и его элементы.
- Контент. Структура сайта и его данные, все тексты, папки, файлы которые видит посетитель или с которыми работают пользователи сайта.
Теперь рассмотрим подробнее, что ставится по умолчанию и как это согласуется с этими частями.
Инструменты сайта
По умолчанию ставится определенный набор инструментов. Зайдите в ZMI, и вы увидите такой список:
- caching_policy_manager (CMF Caching Policy Manager)
- Менеджер, который отвечает за кэширование. XXX! Честно говоря, я им ни разу не пользовался. Так что хотел бы узнать о нем поподробнее.
- content_type_registry (Content Type Registry)
- Инструмент, который привязывает MIME-типы к типам данных портала. Zope позволяет работать с сервером не только по HTTP протоколу, но и FTP и WebDAV. Если вы собираетесь предоставлять доступ к данным по этим протоколам, то, вероятно, вам стоит настроить какие файлы, при загрузке на сервер, будут преобразовываться в какие документы портала. Если вы собираетесь использовать Archetypes, то там есть аналогичный инструмент.
- cookie_authentication (Cookie Crumbler)
- Этот инструмент позволяет авторизовывать пользователей используя жетоны (cookie). Протокол HTTP имеет возможности авторизовывать, и когда вы заходили в ZMI пришлось пройти через окошко ввода логина и пароля. Но к сожалению HTTP не имеет возможности "отлогинить" пользователя. Дабы не вдаваться в детали, скажу, что на данный момент существует только одна законная и удобная схема, через жетоны (cookie). Когда вы входите на сайт вам выдается жетон (cookie), когда нажимаете кнопку "Выйти" - удаляется. Этот продукт позволяет связать информацию получаемую, из жетонов с внутренним механизмом распределения прав Zope.
- error_log (Site Error Log)
- Вообще-то это не инструмент CMF или Plone, а стандартный продукт Zope. Коллектор ошибок и исключений. Принцип работы прост: информация об ошибках возникающих ниже по иерархии дерева записывается в список ошибок. Внимание! Ошибки хранятся в памяти и после перезапуска сервера список очищается.
- plone_utils (Various Plone Utility methods)
- Что-то вроде моста между шаблонами сайта и набором маленьких утилит. Внутренняя система безопасности разрешает скриптам добавляемым в ZMI выполнять только определенные действия и работу с ограниченным числом библиотек. Поэтому приходится размещать часть функционала во внешних продуктах. plone_utils и есть этот внешний набор небольших скриптов, которые и выкинуть жалко, и привязать не к чему.
- portal_actionicons (Plone Action Icons Tool)
- "Очень важный продукт", занимается только тем, что сопоставляет картинки разным действиям на сайте. Причина его возникновения для меня загадка.
- portal_actions (Plone Actions Tool)
- Сердце CMF сайта. Будет рассказано подробнее отдельно.
- portal_calendar (Plone Calendar Tool)
- Продукт по идее должен заниматься отображением календарика с событиями. Работает очень медленно, смысл его существования не ясен, но календарики очень любят заказчики и слабые духом разработчики.
- portal_catalog (Plone Catalog Tool, Indexes all content in the site)
- Важный компонент сайта, поисковый каталог. Все документы при добавлении/изменени/удалении/изменении статуса/etc регистрируются тут. Каталог совмещенный с системой прав как раз и являются тем граммом урана которые делают Zope бесценным.
- portal_controlpanel (Plone Control Panel Tool)
- Список элементов панели управления Plone.
- portal_discussion (Plone Discussion Tool, Controls how discussions are stored by default on content)
- Инструмент отвечает за обсуждения доступные на сайте. Как, разве вы еще не знаете, что на Plone-сайтах можно обсуждать практически все? Так вот на Plone-сайтах можно обсуждать практически все.
- portal_factory (Plone Factory Tool, Responsible for the creation of content objects)
- Специальный инструмент который позволяет не создавать физически в ZODB объекты каждый раз когда пользователи нажимают кнопку "Создать". Объект временно размещается в памяти и пока вы его не сохраните будет оставаться там. Удивительное рядом. По умолчанию отключен. Включать имеет смысл только когда используете Workspace.
- portal_form
- не используется Устаревший инструмент, использовался для проверки форм, а сейчас лежит для совместимости и выдачи Deprecation Warning. Вместо него используется portal_form_controller.
- portal_form_controller (Form Controller Tool, Manage form validation and post-validation actions)
- Инстумент который так же заслуживает отдельного обсуждения. Если кратко, то отвечает за проверку заполнения форм.
- portal_groupdata (Plone Group Data Tool)
- Инстумент хранит информацию о группах пользователей.
- portal_groups (Plone Groups Tool)
- Инстумент отвечает за создание папок групп.
- portal_interface (Portal Interface Tool)
- Так же как и plone_utils служебный инструмент, позволяет получить доступ к программынм интерфейсам.
- portal_memberdata (Plone Memberdata Tool)
- Хранит свойства пользователей и их портреты. Кстати, если вы хотите посмотреть список всех портретов то зайдите по ссылке
Plone/portal_memberdata/portraits/manage_main. - portal_membership (Plone Membership Tool, Handles membership policies)
- Занимается созданием папок участников сайта, что обычно отключается на бизенс сайтах. Так же тут хранятся действия доступные участникам сайта.
- portal_metadata (Plone Metadata Tool, Controls metadata - like keywords, copyrights etc)
- Свойства портала и объектов в нотации Dublin Core. Инстумент так же известен тем, что в нем изменяется список типов событий (закладка Elements, группа свойств Subject).
- portal_migration (Plone Migration Tool, Handles migrations to newer Plone versions)
- Внебрачный ребенок проектов разрабатываемых большой группой людей. Инстумент отвечает за миграцию со старых версий портала на новые. Внимание! Прежде чем мигрировать портал сделайте резервную копию директории var экземпляра сервера.
- portal_properties (Plone Properties Tool, Portal)
- Реестр сайта, тут хранятся свойства с которыми работают инструменты и шаблоны. Если надо поменять поведение чего-то на сайте, то вероятно это можно сделать тут.
- portal_quickinstaller (Plone QuickInstaller Tool)
- Один из немногих действительно оригинальных инструментов написанных создателями Plone (практически все остальные ограничиваются изменением иконки в ZMI для инстументов CMF). Позволяет устанавливать дополнительные продукты влияющие на работу портала. Например: CMFBoard - продукт позволяющий создавать на сайте форумы.
- portal_registration (Plone Registration Tool, Handles registration of new users)
- Отвечает за регистрацию на сайте участников.
- portal_skins (Plone Skins Tool, Controls skin behaviour (search order etc))
- Тут и хранится весь дизайн, формочки, скрипты проверки, картинки и т.д. Все темы оформления хранятся тут.
- portal_syndication (Plone Syndication Tool, Generates RSS for folders)
- Обеспечивает возможность синдикации, к сожалению только в формате RSS.
- portal_types (Plone Types Tool, Controls the available Content Types in your portal)
- Реестр типов данных доступных на сайте. Когда посетитель создает папку или новость, то он создает экземпляр одного из объектов перечисленных в этом списке.
- portal_undo (Plone Undo Tool, Defines actions and functionality related to undo)
- Так же как и portal_syndication или portal_registration инстумент с богатыми внутренними возможностями в ZMI от которых виден только внешний интерфейс. Этот отвечает за отмену действий на сайте. ZODB устроена особым образом, что все изменения дописываются в конец файла, так что до тех пор пока вы не упаковали базу данных у вас всегда есть возможность отменить последние действия. Конечно, есть некоторые ограничения, например если вы создали папку, а потом в ней документ, то нельзя будет отменить создание папки без отмены создания документа.
hint: некоторые действия (например установка продуктов) затрагивают не только Plone портал, но и весь Zope. Для того чтобы отменить подобные действия придется подняться в корень Zope (http://localhost:8080/manage) и там выполнить отмену.
- portal_url (Plone URL Tool, Methods to anchor you to the root of your Plone site)
- Интерфейс доступа к корню портала из шаблонов и скриптов.
- portal_workflow (Plone Workflow Tool, Contains workflow definitions for your portal)
- Инстумент управляет рабочими циклами. Требует отдельного рассмотрения.
Archetypes --bmc, Sat, 10 Jul 2004 15:08:09 +0400 reply
Довольно кратко - если бы описывался подробнее каждый tool (и коротенькие примеры его использования - не путать с интерфейсом), то цены бы такой доке не было. Ещё лучше - описал бы кто-нибудь Archetypes (только не перевод доки с plone.org, а сокращённую и упрощённую версию).