ng.skin.base
2008-02-02 00:05Это базовый скин для контент-сайтов, основанных на ng.site.content.
Продукт
| Название: | |
| ng.skin.base | |
| Выложен на PyPI | |
| Репозиторий |
Краткое описание пакета 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
Включение поддержки возможно, если модули расширения уже установлены. После включенния поддержки станут доступны дополнительные страницы скина для работы с расширениями.
Заключение
К сожалению, в настоящее время у базового скина нет собственного, некоммерческого и свободно-распространяемого дизайна. Это будет исправлено в ближайшем будущем, а до тех пор размер документации ограничен этим кратким изложением.


