================
xdvtheme-Produkt
================
Häufig sollen die Resourcen in einem Python-Paket verwaltet werden.
Erstellen und Registrieren des Python-Pakets
============================================
Ein solches Python-Paket lässt sich einfach erstellen mit::
$ cd src/
$ paster create -t plone vs.xdvtheme
...
Register Profile (Should this package register a GS Profile) [False]: True
...
Hiermit erstellen wir das Python Egg ``vs.xdvtheme`` aus dem Template ``plone`` mit einem Profil für das *Generic Setup Tool*.
Damit dieses Egg auch der Instanz zur Verfügung steht, ändern Sie Ihre ``buildout.cfg``-Datei folgendermaßen ab::
[buildout]
...
eggs =
...
vs.xdvtheme
develop =
...
src/vs.xdvtheme
...
[instance]
...
zcml =
vs.xdvtheme
Rufen Sie anschließend Ihr ``./bin/buildout``-Skript erneut auf.
Erstellen Ihres xdv-Theme
=========================
Zunächst wird hierzu in ``vs.xdvtheme/vs/xdvtheme/configure.zcml`` das Verzeichnis ``Invention`` als Ressource registriert::
Erstellen Sie hierin ein eigenes Theme oder laden eins von `Open Source Web Design`_ herunter, z.B. `Invention`_::
$ cd vs.xdvtheme/vs/xdvtheme/
$ curl -O http://www.oswd.org/files/designs/3293/Invention.zip
$ unzip -v Invention.zip
Für die XSLT-Transformationsregeln erstellen Sie anschließend in ``Invention`` die `rules.xml`_-Datei.
XDV-Konfiguration
=================
Damit Plone die Regeldatei mit den XSLT-Transformationen auch liest, wird ein Profil ``profiles/default/registry.xml`` erstellt, das die Werte im Formular *XDV theme settings* festlegt::
EnabledTruelocalhost:8080python://vs.xdvtheme/Invention/rules.xmlpython://vs.xdvtheme/Invention/index.html/++resource++vs.xdvtheme
``python://vs.xdvtheme/Invention/rules.xml``
Die Ressourcen können nicht nur als Dateipfad angegeben werden sondern auch durch einen Python-Aufruf
``/++resource++vs.xdvtheme``
Die Angabe im Feld ``absolute_prefix`` konvertiert relative URLs zu absoluten unter Verwendung dieses Präfixes.
CSS-Dateien registrieren
========================
Hierzu erstellen wir die Datei ``profiles/default/cssregistry.xml`` mit folgendem Inhalt::
``not:request/HTTP_X_XDV | nothing``
sorgt dafür, dass die ``public.css``-Datei nicht ausgeliefert wird wenn in der HTML-Anfrage ``HTTP_X_XDV`` enthalten ist, also die Plone-Site über xdv ausgeliefert wird.
``request/HTTP_X_XDV | nothing`` würde umgekehrt eine Datei nur ausliefern, wenn die Anfrage durch xdv gestellt wird.
``++resource++vs.xdvtheme/styles.css``
registriert unsere ``styles.css``-Datei an Plones *Stylesheets Registry*.
``applyPrefix``
In Plone 4 kann eine Stylesheetdatei auch mit relativen URLs geparst werden.
Schließlich erstellen wir noch die Datei ``profiles/default/metadata.xml`` um mit unserem ``vs.xdvtheme``-Produkt auch gleichzeitig das benötigte ``collective.xdv`` mitzuinstallieren::
1profile-collective.xdv:default
Wenn Sie nun das Buildout-Skript erneut aufrufen, anschließend die Instanz starten und eine neue Plone-Site mit dem Profil ``vs.xdvtheme`` erstellen, sollte die Plone-Site mit dem neuen Theme erscheinen.
Tipps & Tricks
==============
Zum Entwickeln Ihres Themes Sollen Sie die Zope-Instanz im ``debug``-Modus starten, da Änderungen am Template oder den XSLT-Regeln dann sofort sichtbar werden. Und wenn die *Stylesheets Registry* die css-Dateien ebenfalls im *Debug-Modus* ausliefert, werden auch die Änderungen in diesen Dateien sofort sichtbar.
.. _`Open Source Web Design`: http://www.oswd.org/
.. _`Invention`: http://www.oswd.org/design/information/id/3293
.. _`rules.xml`: rules.xml/view