=====
Diazo
=====
Diazo ist eine Weiterentwicklung von XDV und teilt mit `Deliverance`_ die folgenden Vorteile:
- Diazo ist im Gegensatz zu `plone.app.theming`_ nicht Plone-spezifisch, sodass das Theme auch für weitere Webanwendungen wie Trac, Mailman, Wordpress etc. genutzt werden kann.
- Mit `Diazo`_ lassen sich auch einfach Mashups verschiedener Webinhalte darstellen.
.. _`Deliverance`: http://packages.python.org/Deliverance/
.. _`plone.app.theming`: http://pypi.python.org/pypi/plone.app.theming
.. _`Diazo`: http://diazo.org/
Diazo hat gegenüber Deliverance die folgenden Vorteile:
- Die Regeln sind einfacher
- Die Entwicklung wird von der Plone-Community getragen.
Diazo lässt sich auf zweierlei Arten aufsetzen:
- als einfacher XSLT-Proxy
- zusammen mit WSGI-Middleware-Filtern; dann sollte beim Installieren des Diazo-Eggs zusätzlich ``[wsgi]`` angegeben werden.
Installation
============
#. Erstellen eines Buildout-Verzeichnisses::
$ mkdir diazo
#. Herunterladen der ``bootstrap.py``-Datei::
$ cd diazo
$ curl -O http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
#. Erstellen der ``buildout.cfg``-Datei::
[buildout]
# Adjust the version number as required. See
# http://good-py.appspot.com/release/diazo for a full list
extends = http://good-py.appspot.com/release/diazo/1.0rc4
versions = versions
parts =
lxml
diazo
[diazo]
recipe = zc.recipe.egg
eggs =
diazo [wsgi]
PasteScript
[lxml]
recipe = z3c.recipe.staticlxml
egg = lxml
#. Bootstrapping des Buildout-Projekts::
$ python2.6 bootstrap.py
#. Erstellen des Buildout-Projekts::
$ bin/buildout
Dies sollte die drei Skripte ``./bin/paster``, ``./bin/diazocompiler`` und ``./bin/diazorun`` erstellen.
Konfiguration
=============
Die Konfigurationsdatei ``diazo/proxy.ini`` für den Proxy-Server nutzt Paste Deploy um eine WSGI-Anwendung zu erstellen::
[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 8000
[composite:main]
use = egg:Paste#urlmap
/static = static
/ = default
[app:static]
use = egg:Paste#static
document_root = %(here)s/theme
[pipeline:default]
pipeline = theme
content
[filter:theme]
use = egg:diazo
rules = %(here)s/rules.xml
prefix = /static
debug = true
[app:content]
use = egg:Paste#proxy
address = http://127.0.0.1:8080/VirtualHostBase/http/127.0.0.1:8000/Plone
``[server:main]``
Server, der mit ``./bin/paster serve proxy.ini`` aufgerufen werden kann.
``[composite:main]``
definiert das grundlegende URL-Mapping.
``paster`` liefert alles aus ``/static`` mit ``[app:static]`` aus und alles andere mit ``[app:default]``.
``[app:static]``
liefert das Theme unter ``/static`` aus dem ``static``-Verzeichnis aus.
``[pipeline:default]``
liefert die durch Diazo transformierten Inhalte aus ``theme`` und ``content`` als ``default``.
``[filter:theme]``
Hier wird der Pfad auf die ``rules.xml``-Datei und der Präfix für alle relativen Pfade (z.B. auf CSS-Dateien) angegeben.
``debug = true``
Hiermit wird das Theme bei jeder Anfrage neu erstellt, sodass die Entwicklung deutlich leichter fällt. Für den produktiven Betrieb sollte jedoch ``debug = false`` gesetzt werden um die Performance zu verbessern.
``[app:content]``
liefert die Inhalte aus ``http://127.0.0.1:8000/Plone``
Regeln
======
Schließlich sind noch die Transformationsregeln in ``diazo/rules.xml``-Datei anzugeben. In dem hier abgebildeten Beispiel werden jedoch nur einige grundlegende Transformationen ausgeführt::
Sample content