Dream Bot Site ng.skin.neural ng.skin.dreambot

ng.skin.base

Andrey Orlov  2008-02-02 00:05

Это базовый скин для контент-сайтов, основанных на ng.site.content.

Продукт

Название:
ng.skin.base
Выложен на PyPI
Репозиторий
Краткое описание пакета ng.skin.base

Краткое описание пакета ng.skin.base

Пакет разработан как основа декоративного скина, используемого в CMS DreamBot ng.site.content. Скин изготовлен по сложной технологии, позволяющий отобразить любой объект в соответствии с предоставляемыми им интерфейсами.

Кроме того, скин предоставляет ряд стандартных навигаторов и информеров, которые легко настраиваются (если знать как, разумеется, см. исходный код).

Использование

В настоящее время ng.skin.base нельзя использовать самостоятельно, нужно создавать свой скин на его основе. Это не так трудно, как может показаться, и в качестве примера упомянем три скина, созданные на его основе, это ng.skin.dreambot, ng.skin.eaglenest, ng.skin.zopelada. Все эти скины являются скинами некоторых сайтов и требуют некоторых специальных настроек сайтов, сделанных на основе ng.site.content, без которых первая страница этих скинов не будет видна.

Более того, эти скины запрещено использовать кроме как для ознакомления: все-таки на них сделаны реальные сайты настоящих парней.

Регистрация своего скина

Для регистрации своего скина нужно придумать имя, например my, создать интерфейс, например так:

from ng.skin.base.interfaces import NGBaseSkin

class MySkin(NGBaseSkin):
    """Skin for My Ru"""

Интерфейс нужно зарегистрировать как скин:

    <interface
interface=".interfaces.MySkin"
type="zope.publisher.interfaces.browser.IBrowserSkinType"
name="my"
/>

Теперь его можно вызвать в url как ++skin++my, например:

https://localhost:8080/++skin++my/My

Подразумевается, что сайт создан как компонент с именем My.

Создания файла темплейта

Темлейт содержит оформление сайта и макросы, вызываемые ng.skin.base. В качестве примера лучше изучить maintemplate.pt, а регистрация темплейта выглядет так:

<browser:page
   for="*"
   name="ng_skin_macros"
   permission="zope.View"
   layer=".interfaces.MySkin"
   template="maintemplate.pt"
   />

Это не самый лучший пример, по крайней мере пока. В идеале, темплейт в браузере должен выглядеть как мистическая страница сайта, на которой отображено все, что только возможно.

Создание файла скелета

К сожалению, таблицы стилей устроены таким образом, что отображения сайта зависит от порядка элементов в нем. Это может стать проблемой при попытке сделать разные сайты из одного maintemplate.pt. К счастью, есть простое решение: создать фиктивный шаблон страницы, вместо maintemplate.pt, на котором все макросы вызваны в правильном порядке.

Специально для этой цели существует файл skeleton.pt, который регистрируется следующим образом:

<browser:page
  for="*"
  name="skin_macros"
  permission="zope.View"
  layer=".interfaces.MySkin"
  template="skeleton.pt"
  />

Обращения к нему производятся стандартным образом, т.е. как к skin_macros, пример лучше посмотреть в ng.skin.dreambot.

Создание таблицы стилей

Каскадные таблицы стилей - это то, что придает правильный вид вашему сайту. Их может быть много, но обычно используются три:

style.css
Собственно стиль.
style_ie.css
Стиль страницы для интернет-эксплорера. Должен быть вызван особым образом (см. примеры).
style_text.css
Стиль оформления текста по умолчанию (т.е. тегов без стиля, часто встречается в результате использования ST и других систем автоматической разметки;
style_print.css
Стиль для печатающих устройств;
style_mobile.css
Стиль для мобильных устройств (не очень актуален, так как современные мобильные устройства стилизуют страницу под себя сами, надо сказать - довольно интеллектуально;

Все стили регистрируются как обычные ресурсы:

<browser:resource
name="style.css" file="style.css" layer=".interfaces.MySkin" />

На сегодняшний день наиболее прогрессивной является верстка на div'ах, в противоположенность табличной верстке. Здесь, однако, не будет учебника по верстке, хотя изложенный выше рекомендации даны именно для этого случая.

Создание ресурсов

Ресурсы - это различные картинки (логотипы, например) и прочие элементы оформления. Их регистрация оформляется также, как и регистрация стиля.

Поддержка модулей расширения

Сайт ng.site.content имеет два модуля расширения: ng.site.addon.remotefs и ng.site.addon.rubricator. Для нормальной работы модулей расширения скин должен быть установлен с включенной поддержкой этих модулей, что достигается установкой конфигов:

etc/ng.skin.base-remotefs-configure.zcml
Для поддержки ng.site.addon.remotefs
etc/ng.skin.base-rubricator-configure.zcml
Для поддержки ng.site.addon.rubricator

Включение поддержки возможно, если модули расширения уже установлены. После включенния поддержки станут доступны дополнительные страницы скина для работы с расширениями.

Заключение

К сожалению, в настоящее время у базового скина нет собственного, некоммерческого и свободно-распространяемого дизайна. Это будет исправлено в ближайшем будущем, а до тех пор размер документации ограничен этим кратким изложением.

Вложено:

Новое в ng.skin.base 2010-09-23 09:19 Степан Ломов 

...

ng.skin.base README.txt 2008-02-02 00:05 Степан Ломов 

...

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml