Products.Collage 1.2.2

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

Совместимость

  • Plone 3.1-3.3
  • Five 1.5

О продукте

Collage является продуктом для агрегирования и отображения содержимого нескольких элементов на одной странице.

Он предоставляет следующие типы контента:
  • Collage (Коллаж)
  • Row (Ряд)
  • Column (Колонка)
  • Alias (Алиас)
Первые три являются структурными контейнерами, которые обеспечивают основные функциональные возможности верстки. Исходное условие состоит в том, чтобы колонка умещалась внутри строки, которая в свою очередь вмещается внутри collage.

Тип Алиас предоставлен для обеспечения отображения существующих объектов с сайта в collage.

Обновление

Если Вы обновили Products.Collage в файловой системе, откройте в ZMI файл /your/plone/site/portal_setup, и щелкните по вкладке "Обновить (Upgrade)".

Выберите профиль "Products.Collage:default" и посмотрите доступны ли обновления. Запустите их.

Функциональные возможности Javascript

Используется библиотека jquery, чтобы облегчить работу со скриптом. Для перемещения элементов контента, колонок и строк без перезагрузки страницы используется Ajax.

Поддержка для add-on пакетов

Их следует добавить к пакету collective.collage:

under ./browser/addons/<package name>

Убедитесь, что collective.collage находится в your python path, если Вы хотите, чтобы эти отображения регистрировались для использования в Collage.

См. DEVELOPER.txt, чтобы добавить поддержку для пользовательских типов и тем.

Трекер

Список участников:

Разработка:

Перевод:

Спонсоры

Спонсорами работ над этим проектом были: Headnet (http://www.headnet.dk) и EDF (http://www.edf.fr)

 

Разработчик документации Collage

Продукт Collage был создан, чтобы облегчить его настройку.

Виды представления контента

Новые виды отображения контента можно добавить через регистрацию отображения браузером с помощью browser:page-directive. Примеры этого можно найти здесь:

./browser/views.zcml

Вид для стандартного документа может быть зарегистрирован следующим образом:

<browser:page
   name="my-view"
   for="Products.ATContentTypes.content.document.ATDocument"
   permission="zope.Public"
   template="my-view-template.pt"
   class=".document.MyDocumentView"
   layer="Products.Collage.interfaces.ICollageBrowserLayer"
   />

Для отображения названия, удобного для восприятия человеком, сопоставьте вид со следующим классом, помещенным в файл document.py:

from Products.Five.browser import BrowserView

class MyDocumentView(BrowserView):
    title = u'My view'

Отображения контента определенной тематики

Если Вы хотите добавить новое отображение или отменить существующее только для сайтов, использующих продукт по одной конкретной теме, Вы должны зарегистрировать слой Collage layer по определенной теме. (Мы не можем повторно использовать нормальный слой по конкретной теме, потому что тогда невозможно будет определить какой Вид настроен в Collage view).

Чтобы добавить Collage layer по определенной теме, используйте следующий ZCML:

<interface
    interface=".path.to.IMyCollageThemeLayer"
    type="Products.Collage.interfaces.ICollageBrowserLayerType"
    name="Plone Default"
    />

где атрибут интерфейса является пользовательским marker-интерфейсом, который Вы сами определили, и атрибутом имени является имя CMF темы, с которым Вы хотите ассоциировать этот слой.

Затем Вы можете использовать layer=".path.to.interfaces.IMyCollageThemeLayer" при регистрации вида ZCML, вместо Products.Collage.interfaces.ICollageBrowserLayer.

Виды Скинов

Новые виды скинов можно добавить, зарегистрировав названную утилиту в:

MySkin/browser/skins.zcml

Например, скин "Alert" для вида "my-view" может быть зарегистрирован следующим образом:

<utility
   name="collage-my-view-alert"
   provides="Products.Collage.interfaces.IAlertSkin"
   factory=".skins.PortletSkin03"
/>

Чтобы отобразить название, удобное для восприятия человеком, мы ассоциируем утилиту со следующим классом, расположенным в skins.py:

from Products.MySkin import MyMessageFactory as _

class PortletSkin03(object):
    title = _(u"skin-03", default=u"My portlet skin")

Добавьте IAlertSkin в MySkin/interfaces.py:

from zope import interface
class IAlertSkin(interface.Interface):
     """Interface for alert skins views."""

Чтобы ассоциировать этот скин с видом, Вы должны добавить интерфейсы, осуществляемые через скин:

class MyDocumentView(BrowserView):
    title = u'My view'
    skinInterfaces = (IAlertSkin,)

Обратите внимание, что Вам не нужен выше упомянутый stuff для portlets views, которые уже входят в скин.

И наконец, добавьте свои CSS-правила в stylesheet:

#collage .collage-my-view-alert {
 ...

}

Заметим, что если Вы используете "Merge CSS composition" из реестра CSS, ваш stylesheet должен быть после "collage.css" и использовать те же условия, что и предыдущий:

object/@@collage|nothing

Products.Collage предоставляет минимальный набор демо скинов. См. папку skindemo (как обычно начните с skindemo/README.txt ).

Контроль контента

Контроль контента зарегистрирован как viewlets. См. в качестве примера ./browser/viewlets.zcml. 

Оригинал статьи на pypi.python.org

Перевод ООО «Комтет» komtet.ru