npsobj insertvalue template

Syntax

npsobj_insertvalue_template ::=

  <npsobj insertvalue = "template"
    ( name = "name" ) | ( key = "key" ) 
    { other_attribute } >
    content
  </npsobj>

other_attribute ::= string = "string"

Aufgabe

Diese Anweisung ersetzt das Element durch eine ausgewertete Layoutdatei. Ist das Attribut name angegeben, wird dessen Wert als Name der Layoutdatei verwendet, andernfalls wird der Name im Feld key des aktuellen Kontexts nachgeschlagen.

Die Suche nach einer Layoutdatei mit dem ermittelten Namen beginnt im aktuellen Kontext. (Beim Export einer Datei entspricht der aktuelle Kontext anfangs dieser Datei. Der Kontext kann jedoch im Verlauf des Exports durch weitere Exportanweisungen umgesetzt werden.) Ist der aktuelle Kontext ein Ordner, beginnt die Suche in diesem Ordner, andernfalls in dem Ordner, der die CMS-Datei enthält, die den aktuellen Kontext bereitstellt. Ist der aktuelle Kontext ein Link, beginnt die Suche bei der CMS-Datei, die den Link enthält.

Existiert die Layout-Datei nicht an der Stelle, die wie beschrieben ermittelt wurde, wird immer weiter in den darüber liegenden Ordnern gesucht, bis sie gefunden wird oder der Basisordner erreicht ist. Gibt es auch im Basisordner keine Layoutdatei mit dem gesuchten Namen, wird eine entsprechende Fehlermeldung als Ergebnis verwendet.

Bis Version 6.7.0 werden andere Attribute als name und key sowie der content des Elements ignoriert.

Erweiterungen ab Version 6.7.1

Im NPSOBJ-Tag können neben name und key weitere Attribute angegeben werden, um der inkludierten Layout-Datei Argumente zu übergeben. Der Wert eines solchen Arguments kann nur Text sein, keine Kontextliste. Bei Bedarf kann der Wert eines Arguments mit einer @-Referenz berechnet werden.

Die Argumente werden wie Exportvariablen behandelt, sind jedoch nur innerhalb des aufgerufenen Layouts sichtbar, d.h. sie sind lokale Variablen. Um Namenskonflikte mit globalen, mittels modifyvar-set oder modifyvar-append erzeugten Exportvariablen zu vermeiden, sollten die Namen der lokalen Variablen eindeutig sein. Eine lokale Variable kann mit modifyvar-set oder modifyvar-append modifiziert und mit modifyvar-clear gelöscht werden. Existiert die in diesen Anweisungen angegebene lokale Variable nicht, werden die Anweisungen auf die gleichnamige globale Exportvariable angewendet, falls diese existiert.

Zusätzlich zu den Argumenten wird der nicht ausgewertete content des Elements der inkludierten Layoutdatei als Wert der ebenfalls lokalen Variablen npsobjContent übergeben. Im content enthaltene NPSOBJ-Anweisungen werden erst ausgewertet, wenn npsobjContent ausgelesen wird, d.h. im jeweiligen lokalen Kontext.

Auf die Argumente und npsobjContent können Sie innerhalb des inkludierten Layouts so zugreifen wie auf andere Felder und Exportvariablen auch, also beispielsweise mit der Anweisung insertvalue-var.

Beispiele

Der folgende Code prüft, ob die exportierte Datei oder einer ihrer darüber liegenden Ordner ein Feld mit dem Namen listTemplateName enthält. Ist der Wert dieses Feldes nicht der leere Wert, so wird er als Name einer Layoutdatei aufgefasst, die dann verwendet wird.

<npsobj condition="isNotEmpty" name="up.listTemplateName">
  <npsobj insertvalue="template" key="up.listTemplateName" />
</npsobj>

Das folgende Beispiel zeigt, wie der inkludierten Layoutdatei ein Argument als Attribut (showbody) sowie ein Text im Elementinhalt übergeben werden. Beide Werte werden von der Layoutdatei ausgegeben. Diese beiden Techniken der Übergabe von Werten an Layouts sind ab Version 6.7.1 verfügbar.

<!-- Anweisungen im inkludierenden Layout -->
<npsobj insertvalue="template" name="TemplateName" showbody="1">
  <h1>Bereichsüberschrift</h1>
  <p><strong><npsobj insertvalue="var" name="title"/></strong></p>
</npsobj>

<!-- Inhalt des Layouts TemplateName -->
<npsobj insertvalue="var" name="npsobjContent"/>
<npsobj condition="isEqual" name1="showbody" value2="1">
  <p><npsobj insertvalue="var" name="body"/></p>
</npsobj>

Beim Aufruf des inkludierenden Layouts erzeugt das obige Fragment die folgende Ausgabe (die Farben dienen nur zur Veranschaulichung):

  <h1>Bereichsüberschrift</h1>
  <p><strong>Titel des exportierten Dokuments</strong></p>
  <p>Dies ist der Body des exportierten Dokuments.</p>