===== 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:: Theme ===== Wesentlicher Bestandteil eines Themes ist eine HTML-Datei, ``theme/theme.html``:: Dummy title

Dummy Headline

Sample content

Schließlich sollten Sie den Diazo-Server starten können mit:: $ ./bin/paster serve --reload proxy.ini .. toctree:: :titlesonly: :maxdepth: 1 :hidden: diazo-regeln fortgeschrittene-diazo-regeln tipps-tricks deployment diazo-performance-monitoring