Transformationsregeln

Regeln

<rule class="static" />
<rule class="plone" suppress-standard="true">
<rule>

definiert eine Reihe von Transformtionen.

Es werden sowohl page classes als auch request/response matching unterstützt.

Mit page classes lässt sich eine rule class einem bestimmten patch, einer bestimmten domain oder einem bestimmten response-header zuweisen, z.B:

<rule class="news-section">
    <theme href="/static/news.html" />

<match path="regex:^/news" class="news-section" />

Weitere Informationen hierzu erhalten Sie im Abschnitt match and page classe.

suppress-standard="true"

Deliverance kommt üblicherweise mit einer Reihe von Aktionen, die das Kopieren des Titels oder eines Skripts erlauben. Diese sind:

<rule>
    <replace content="children:/html/head/title"
             theme="children:/html/head/title" nocontent="ignore" />
    <append content="elements:/html/head/link"
            theme="children:/html/head" nocontent="ignore" />
    <append content="elements:/html/head/script"
            theme="children:/html/head" nocontent="ignore" />
    <append content="elements:/html/head/style"
            theme="children:/html/head" nocontent="ignore" />
</rule>

Diese Regeln können unterbunden werden mit dem suppress-standard="true"-Attribut.

Theme

<theme href="/static/index.html" />
<theme>
definiert das Thema, das Sie verwenden in Form einer URL.

Aktionen

<replace>

ersetzt ein Element aus theme durch ein Element aus content.

Die folgende Aktion ersetzt z.B. den Titel des Themes durch denjenigen aus Plone:

<replace content='/html/head/title' theme='/html/head/title' />
<append>

fügt ein Element aus content am Ende eines Elements aus theme ein.

Die folgende Aktion hängt z.B. die base-Url aus Plone an die head-Angaben des Theme. Dies gewährleistet, dass die Links aus Plone weiterhin funktionieren:

<append content='/html/head/base' theme='children:/html/head' />
<prepend>

fügt ein Element aus content am Anfang eines Elements aus theme ein.

Die folgende Aktion stellt z.B. das Navigationsportlet aus Plone an den Anfang der rechten Spalte des Theme:

<prepend content='dl.portletNavigationTree' theme='children:#rightbar' />
<drop>

entfernt das Element aus dem content oder theme.

Die folgende Aktion entfernt z.B. das User-Icon von Plone:

<drop content='#user-name img' />

Selektoren

CSS3-Selektoren
Jede Aktion beruht auf der Auswahl der Elemente des Theme und des Inhalts. Die einfachste Auswahl kann anhand von CSS-Selektoren erfolgen.
XPath
Es können auch XPath-Angaben als Selektoren verwendet werden. Diese beginnen immer mit /.

Diese beiden Selektoren verweisen immer auf Elemente. Um spezifischere Aktionen ausführen zu können, wurden daher noch die folgenden Selektoren eingeführt:

elements
Der Standardselektor.
children
erlaubt, Regeln auf Kindelemente der ausgewählten Elemente anzuwenden. Hiermit lassen sich auch Aktionen auf Textinhalte anwenden.
attributes
Hiermit lassen sich Aktionen nur auf bestimmte Attribute der ausgewählten Elemente anwenden.
tag
Dieser Selektor erlaubt, Aktionen nur auf einen Tag, nicht jedoch auf dessen Kindelemente anzuwenden.

||-Operator

Der ||-Operator nimmt die Ergebnisse des ersten Selektors, sofern vorhanden. Andernfalls nimmt er die Ergebnisse des zweiten Selektrors. So verwendet z.B. die folgende Aktion alle Elemente der ID content; sind in content jedoch keine Elemente vorhanden, werden die Kindelemente von <body> verwendet:

content="#content || children:body"

if-content

Alle Aktionen können das Attribut if-content erhalten womit die Aktion nur ausgeführt wird wenn die Bedingung erfüllt ist, z.B.:

<replace if-content='body.section-news' content='children:dl.portletEvents dt.portletHeader a' theme='children:#rightbar h2' />

Dem zu überprüfenden Wert kann auch not: vorangestellt werden.

Externe Inhalte einbinden – Mashup

Deliverance erlaubt auch das Einbinden von externen Quellen. Hierzu wird das href-Attribut für eine Aktion verwendet, z.B.:

<append href="http://twitter.com/plone"
        content="#timeline"
        theme='#rightbar' />

Somit ist Deliverance nicht nur für das Theming beliebiger Webanwendungen geeignet, es kann auch das Mashup verschiedener Inhalte von Webanwendungen übernehmen.