Краткое описание пакета ng.content.article
==========================================

Пакет ng.content.article это базовый пакет
контент-типов, моделирующих "коллекцию статей" (откуда,
собственно, и название). Контент-типы базового
пакета могут быть расширены установкой
дополнительных пакетов контент-типов (например,
[name:ng.content.remotearticle], либо установкой
пакета [name:ng.content.annotation], позволяющего
модифицировать контент-объекты, динамически
связывая их с аннотациями (что, упрощенно говоря,
приводит к появлению новых полей описания контента
и дополнительных элементов отображения на странице).

В базовый набор контент-типов входят
------------------------------------

    maincontainer
        Головной контейнер сайта, может быть сайт-менеджером
        и содержит ряд свойств, позволяющих разместить
        общий контент сайта (например, меню ссылок);
        
    division
        Раздел сайта, используется как контейнер с материалами,
        с которыми рекомендовано связывать статистику, rss и аналогичные
        сервисы;
        
    article 
        Собственно статья, содержащая основной (текстовый) контент,
        как и раздел, может быть использована в качестве
        контейнера с материалами (обычно вложенные статьи, приложения
        и рисунки).
                
Интерфейсы контент-типов
------------------------            

    IDocShort
        Интерфейс, содержащий краткое описание контента, используемое
        преимущественно при выводе в поиске и списке содержимого. Реализуется
        контент-типами division, maincontainer.
        
        Содержит поля:
        
        title : TextLine
            Название статьи.
            
        created : DateTime
            Дата создания.
            
        author : TextLine
            Автор статьи.
            
        isdivision : Bool
            Объект используется как раздел (при отображении
            вложенных материалов в виде одной страницы, эта 
            статья не войдет в общую страницу, а останется
            вложенным материалом).
        
        ishidden : Bool
            Объект скрывается из общего списка вложенных материалов.


    IDocShortLogo
        Содержит все поля интерфейса IDocShort и, дополнительно к ним,
        поле лого. Реализуется контент-типом article.
        
        logo : SmartImage
            Логотип, управляемый посредством продукта SmartImageCache, 
            который позволяет настроить размер логотипа в зависимости
            от места его отображения в пользовательском интерфейсе.
    
    IDocBody
        Содержит поля, позволяющие разместить основное содержимое статьи.
        Реализуется контент-типом article.
        
        body : Text
            Текстовое содержимое, обычно содержит текст в различных
            форматах, преобразование которого производится адаптерами
            продукта [name:ng.app.converter] или аналогичными.
            
        iscontent : Bool 
            Собирать содержание страницы статьи из вложенных объектов.
            В этом случае объекты не показываются в списке вложенных.
            
        interface : Interface
            Интерфейс-маркер, обуславливающий выбор адаптера для
            форматирования содержимого атрибутов статьи (в частности,
            атрибута body), адаптер предоставляется продуктом
            [name:ng.app.converter] или аналогичным.

    IMainPage
        Содержит поля, используемые главной страницей сайта:
        
        title, abstract, created, author 
            Аналогично интерфейсу IDocShort (от составных частей
            которого он их и наследует)
            
        mainiface 
            Интерфейс-маркер для выбора вида главной страницы;
            
        logo 
            Логотип, используемый на главной странце (используется
            тиражируемыми скинами);
            
    IUrlPage
        Список ссылок, отображаемых обычно в одном из главных меню
        страницы. Каждый элемент списка имеет поля:
        
        URL : URI
            Ссылка
            
        title : TextLine
            Текст под ссылкой
            
        alternative : Text
            Комментарий к ссылке
            
    IArticle 
        Специальный интерфейс контент-типа статья.
        
### Ты не ошибся? IArticle то же самое что IDivision?
    IDivision
        Специальный интерфейс контент-типа статья.

    IMainContainer
        Специальный интерфейс контент-типа "корневая папка сайта".
        
Интерфейсы, используемые для настройки продукта
-----------------------------------------------

Для настройки продукта используется концепция "интерфейсов-настройки", в
которой любой класс может быть объявлен директивой ZCML, реализующей
интерфейс настройки, после чего класс получает свойства этого интерфейса.
Пример такого объявления::

  <!- Для класса раздел -->
  <class class="ng.content.article.division.division.Division">
    <!-- разрешить вхождение в статью -->
    <implements interface="ng.content.article.article.interfaces.IArticleContent"/>
    <!-- разрешить вхождение в раздел -->
    <implements interface="ng.content.article.division.interfaces.IDivisionContent"/>
    <!-- раздел будет появляться в списке содержимого раздела -->
    <implements interface="ng.content.article.interfaces.IContentShowable"/>
    <!-- разрешить вхождение в корневой контейнер -->
    <implements interface="ng.content.article.maincontainer.interfaces.IMainContent" />
  </class>


Такое объявление должно быть размещено либо в специально созданном
продукте-сайте, как описано в статье [name:Структура Zope3 сайта.txt], или в
настройках инсталляции экземпляра Zope3: решение зависит от способа поставки
вашего продукта. Приведем список настроечных интерфейсов:
    
    IMainContent
        Компонент с таким интерфейсом может быть
        содержимым корневой папки сайта;

    IDivisionContent
        Компонент с таким интерфейсом может быть содержимым раздела;

    IArticleContent
        Компонент с таким интерфейсом может быть содержимым статьи;
        
    IContentShowable
        Компонент с таким интерфейсом будет отображаться в списке
        содержимого статьи или раздела;

    ICommonContainer
        Во избежание появления наших контент-компонентов вне настроенной
        иерархии типов контента, заведен этот интерфейс: наши компоненты,
        как правило, могут быть вложены только в контейнер с таким
        интерфейсом. Реализованность этого интерфейса должна быть
        задекларирована для класса, который будет использоваться вместо
        MainContainer (например, Folder).


Заключение
----------

Использовании контент-классов ng.content.article особенно полезно в
комбинации с ng.content.abstract (позволяющим неограниченно расширять
функциональность классов) и рядом других продуктов, но и их индивидуальное
использование также обладает определенной ценностью.

### Проверь комментарий выше!!!
### [name:редактор]
