============================= Fortgeschrittene Diazo-Regeln ============================= Bedingte Regeln =============== … basierend auf Knoten im Inhalt -------------------------------- ``if-content`` oder ``css:if-content`` spezifiziert ein Element im ``content`` ``if-not-content`` oder ``css:if-not-content`` kehrt die Bedingung für ein Element im ``content`` um, z.B.:: ``if-not-path`` spezifiziert einen URL-Pfad, der mit dem aktuellen Request **nicht** erfüllt sein darf damit die Regel angewendet wird, z.B.:: … basierend auf Pfadangaben im Inhalt ------------------------------------- ``if-path`` oder ``css:if-path`` spezifiziert einen Pfad in ``content`` Soll der Pfad z.B. beginnen mit ``somewhere``, sieht die Regel folgendermaßen aus:: Angabe eines exakter Pfad mit:: if-path="/somewhere/" Angabe des Pfadende mit:: if-path="somewhere/" Angabe eines Pfadbestandteils mit:: if-path="somewhere" ``if-not-path`` oder ``css:if-not-path`` kehrt die Bedingung für einen Pfad im ``content`` um … basierend auf XPath-Ausrücken ------------------------------- ``if="$mode=''"`` spezifiziert einen Knoten, der vorhanden sein muss, damit eine Regel oder ein Theme angewendet werden:: ``if-not="$mode=''"`` spezifiziert einen Knoten, der **nicht** vorhanden sein darf, damit eine Regel oder ein Theme ausgeführt werden Gruppierung und Verschachtelung von Bedingungen =============================================== Gruppierung von Bedingungen:: Verschachtelung von Bedingungen:: entspricht:: Mehrere bedingte Themes ======================= :: Ausgabe ändern ============== Mit Inline-XSLT-Anweisungen lassen sich z.B. die Leerzeichen zwischen ELementen entfernen und automatische Einrückungen vornehmen:: Inline XSLT-Anweisungen werden direkt innerhalb des ````-Tag angegeben und ohne Bedingungen ausgeführt. Ändern des Themes ================= Inline-Markup ------------- :: XSLT-Anweisungen ---------------- ::
Ändern des Inhalts ================== Inline-Markup ------------- Mit ```` lässt sich auch der Inhalt modifizieren, so kann z.B. das ``input``-Element mit der Klasse ``searchButton`` ersetzt werden durch ein ``button``-Element vom Typ ``submit``:: Entfernen leerer Tags --------------------- Ein Absatz ohne Inhalte lässt sich z.B. so entfernen:: Einfügen eines Tags ------------------- Tags lassen sich z.B. am Beginn oder Ende eines Inhaltsbereichs einfügen:: Etwas aufwändiger wird es, wenn Tags innerhalb von Inhaltselementen eingefügt werden sollen::
Attribute ändern ---------------- Auch die Attribute eines Tags lassen sich ändern. So kann z.B. eine css- Klasse hinzugefügt werden mit:: current-menu-item Auch Bilder in ``content`` lassen sich hiermit in einer bestimmten Größe anzeigen mit:: /@@/images/image/thumb Dies ändert z.B.:: in:: Text einfügen ------------- Mit ``xsl:copy`` lassen sich Texte im Inhalt ergänzen, z.B.:: – Extra text Einbinden weiterer ``rules``-Dateien ==================================== Mit dem ``XInclude``-Protokoll lassen sich andere ``rules``-Dateien einschließen, z.B.:: Einbinden externer Inhalte ========================== :: Um entfernte Inhalte einbinden zu können, muss Diazo folgendermaßen konfiguriert werden:: [filter:theme] use = egg:collective.diazo.readheaders #You can use any other Diazo middleware options here, too! read_network = True XSLT-Anweisungen ---------------- Da der von Diazo verwendete libxml2-HTMLParser Namespace-Präfixe herauskürzt, kann z.B. der FaceBook Like-Button ```` nicht integriert werden mit ``//*[local-name()="like"]``. Stattdessen kann z.B. folgende XSL-Transformation verwendet werden:: Doctype ======= Üblicherweise gibt Diazo den HTML-Seiten den Doctype ``XHTML 1.0 Transitional``. Um ``Strict`` anzugeben, sollte folgende XSLT angegeben werden:: Es ist nicht möglich, den HTML5-Doctype mit XSLT zu setzen. Stattdessen sollte dann ```` gesetzt werden. .. seealso:: `Advanced usage `_ Englische Diazo-Dokumentation `diazo/lib/diazo/tests `_ Die Tests von Diazo enthalten viele gebräuchliche Regeln `Diazo Snippets Library `_ Snippets vor allem zur Nutzung von Bootstrap und Foundation