Dies ist eine alte Version des Dokuments!
Mit current
kann auf Inhalte zugegriffen werden, die zuvor von einer anderen stdWrap-Funktion dynamisch generiert wurden. Ein typisches Beispiel ist split. Der jeweils aktuelle Wert des Elternelements wird mit current
an ein Element oder einen Parameter übergeben.
Beispiel:
Das Elternelement ist hier das cObject 10
, dessen Inhalt eins,zwei mit split
zu zwei dynamischen Werten aufgeteilt wird. Diese werden nacheinander dem cObj 1
innerhalb von split
übergeben. Für jeden Wert werden die Funktionen des cObjects einmal angewendet, im Beispiel der Wrap.
10 = TEXT 10 { value = eins,zwei split { token = , cObjNum = 1 1.current = 1 1.wrap = <p>|</p> } } # Ausgabe: <p>eins</p><p>zwei</p>
Wer sich in diesem Beispiel mit 10.split.1.debugData = 1
den Inhalt aus $cObj→data als Tabelle ausgeben lässt, erhält zweimal exakt denselben Datensatz aus der Tabelle pages. Zusätzlich gibt es jedoch ein Feld currentValue_kidjls9dksoje, dass die unterschiedlichen Werte des cObjects 10
ausgibt: eins und zwei. Eben auf diese temporär verfügbaren Inhalte kann man mit current
zugreifen.
Überschreibt den aktuellen Wert des Elternelements mit dem vorher definierten Wert. Der neue Wert wird bei allen zugehörigen Elementen angewendet.
Im folgenden Beispiel wird der erste Wert eins im cObj 1.10
überschrieben, was sich auch auf 1.20
auswirkt. Das liegt daran, dass beides Unterelemente vom cObj 1
sind. Der Wert im cObj 2
bleibt davon ausgenommen, current
lädt hier den Wert, den split
diesem cObject zugeordnet hat.
10 = TEXT 10 { value = eins,zwei split { token = , cObjNum = 1||2 1.10 = TEXT 1.10.value = Text 1.10.setContentToCurrent = 1 1.10.wrap = <p>|</p> 1.20 = TEXT 1.20.current = 1 2.current = 1 2.wrap = <p>|</p> } } Ausgabe: <p>Text</p>Text<p>zwei</p>
Ersetzt wie setContentToCurrent
den aktuellen Wert des Elternelements, hier wird der Wert aber manuell als String angegeben. stdWrap-Funktionen sind anwendbar.
10 = TEXT 10 { value = eins,zwei split { token = , cObjNum = 1||2 1.10 = TEXT 1.10.setCurrent = Text 1.10.current = 1 1.10.wrap = <p>|</p> 1.20 = TEXT 1.20.current = 1 2.current = 1 2.wrap = <p>|</p> } } # Ausgabe: <p>Text</p>Text<p>zwei</p>
Wie oben bereits erklärt, kann man mit setContentToCurrent
und setCurrent
selbst Werte übergeben. Hierzu muss kein Wert vorhanden sein, den man dann überschreibt - der Wert eines jeden cObjects kann auf diese Weise als Variable gespeichert werden.
In den folgenden Beispielen wird jeweils ein Wrap mit dynamischem Inhalt (aktuelle Seiten-ID) als current-Wert gespeichert und anschließend zwei verschiedenen cObjects als outerWrap
übergeben.
Während der current-Wert im ersten Beispiel innerhalb von setCurrent
erstellt wird, erfolgt im zweiten Fall die Zuweisung mittels setContentToCurrent
, nachdem die gewünschten Angaben per COA generiert werden. Das Ergebnis ist in beiden Fällen dasselbe. Dennoch sollte man bei dynamischen Werten z.B. aus Datenbankfeldern setContentToCurrent
verwenden, weil dies die Arbeit erleichtert und mehr Möglichkeiten bietet.
10 = TEXT 10 { setCurrent = <div class="{field:uid}">|</div> setCurrent.insertData = 1 cObject = COA cObject { 10 = TEXT 10.field = title 10.required = 1 10.outerWrap.current = 1 20 = TEXT 20.field = description 20.required = 1 20.outerWrap.current = 1 } }
20 = COA 20 { 10 = TEXT 10.field = uid # Leerzeichen bei '<div' nur wegen Fehler im Syntax-Highlighting: 10.wrap = < div class="|"> 20 = TEXT 20.value = |</div> stdWrap.setContentToCurrent = 1 stdWrap.cObject = COA stdWrap.cObject { 10 = TEXT 10.field = title 10.required = 1 10.outerWrap.current = 1 20 = TEXT 20.field = description 20.required = 1 20.outerWrap.current = 1 } }
<div class="65">Ebene 1</div> <div class="65">Beschreibung</div>