npsobj modifyvar set

Syntax

npsobj_modifyvar_set ::=

  ( <npsobj modifyvar = "set" 
      varname = "name" 
      name = "varValueKey" 
      [ local = "( true | false )" ] /> ) |

  ( <npsobj modifyvar = "set" 
      varname = "name" 
      [ local = "( true | false )" ]>varValue</npsobj> )

Aufgabe

Export-Variablen können dazu verwendet werden, während des Exports einer Datei Zeichenketten oder Kontextlisten unter einem Namen zu speichern. Auf die Werte kann man zugreifen, indem man die Namen so referenziert wie andere während des Exports gültige Namen auch.

Wird das ab Version 6.7.1 verfügbare Attribut local mit dem Wert true angegeben, so sind die mit dieser Anweisung erzeugten Exportvariablen nur in genau der Layoutdatei sichtbar, in der sie erzeugt wurden. Ihr Geltungsbereich ist in diesem Fall also auf das aktuelle Layout beschränkt, d.h. die Variablen sind weder im aufrufenden Layout noch in Sublayouts verfügbar. Bitte beachten Sie, dass ab Version 6.7.1 Variablen auch als Argumente an Layouts übergeben werden können, die mit insertvalue-template-Anweisungen inkludiert werden.

Bis Version 6.7.0, oder wenn local mit dem Wert true nicht angegeben wurde, sind die Exportvariablen von dem Moment ihrer Erzeugung bis zum Abschluss des Exports der jeweiligen Datei global verfügbar (sofern die Variable nicht zwischenzeitlich mit einer modifyvar-clear-Anweisung gelöscht wird). Der Wert einer gesetzten Variablen kann also auch bei einem Kontextwechsel, beispielsweise innerhalb einer NPSOBJ-list- oder NPSOBJ-context-Anweisung, abgerufen werden.

Die Namen von Export-Variablen haben Vorrang vor anderen Namen (beispielsweise den Namen von Feldern). Legt man also beispielsweise eine Export-Variable mit dem Namen author an und weist ihr mit

<npsobj modifyvar="set" varname="author">Max Mustermann</npsobj>

die Zeichenkette Max Mustermann zu, so liefert <npsobj insertvalue="var" name="author" /> stets Max Mustermann, und zwar auch dann, wenn die aktuell exportierte Datei ein Feld author mit einem anderen Wert hat. Es ist jedoch möglich, mit dem Präfix self explizit den Wert eines Feldes zu referenzieren. Analog dazu kann man mit dem Präfix export ausdrücklich den Wert einer Export-Variablen inkludieren.

Die modifyvar-set-Anweisung gibt es in den beiden oben aufgeführten Varianten.

Variante 1: Wertzuweisung mittels Tag-Attribut

Bei der ersten Variante wird der Variablen der Wert des Feldes oder der Exportvariablen namens varValueKey zugewiesen. varValueKey kann (wie beispielsweise parent.title) eine Zeichenkette oder eine Liste von Link- oder Dateikontexten ergeben. Die Namen, die Datei- oder Linkkontexte ergeben, sind in den Abschnitten Verfügbare Namen in einem Kontext vom Typ Datei und Verfügbare Namen in einem Kontext vom Typ Link aufgeführt. Die folgende Anweisung setzt die Variable siblings auf die Liste der Geschwisterdateien der aktuellen Datei (und schließt sich selbst dabei ein):

<npsobj modifyvar="set" varname="siblings" name="parent.children" />

An Export-Variablen, die Link- oder Dateikontexte enthalten, können mit der modifyvar-append-Anweisung weitere Kontextlisten angehängt werden (siehe npsobj_modifyvar_append). Ferner können die Kontexte in Export-Variablen sortiert werden (siehe npsobj_modifyvar_sort).

Variante 2: Wertzuweisung über den Inhalt des Elements

Mit der zweiten Variante der modifyvar-set-Anweisung kann einer Export-Variablen eine Zeichenkette zugewiesen werden. NPSOBJ-Elemente in dieser Zeichenkette werden ausgewertet. Dadurch lassen sich Layouts, in denen dasselbe Konstrukt mehrfach benötigt wird, effizienter schreiben.

Beachten Sie bitte, dass die modifyvar-set-Anweisung bei dieser Verwendungsweise einen neuen Kontext erzeugt. Dieser Kontext entspricht dem vorausgegangenen Kontext. Möchten Sie einen Kontext oberhalb des aktuellen Kontexts adressieren, so benötigen Sie einen zusätzlichen context-Präfix wie im folgenden Beispiel:

<npsobj list="relatedLinks">
  <npsobj modifyvar="set" varname="theLinkListCode"><p>
    <npsobj list="context.context.linkImage">
      <npsobj insertvalue="image" name="destination" />
    </npsobj>
    <npsobj insertvalue="anchor" name="self">
      <npsobj insertvalue="var" name="destination.title"/>
    </npsobj></p>
  </npsobj>
</npsobj>

Um die CMS-Datei zu ermitteln, die einen Link enthält, kann auch die Linkeigenschaft source abgefragt werden.

Beispiel

Der folgende Code speichert einen Link zum Ordner, der über der aktuellen Datei liegt, in einer Variablen und gibt ihn anschließend aus.

<npsobj modifyvar="set" varname="uplink">
  <npsobj insertvalue="anchor" name="parent">
    <npsobj insertvalue="var" name="parent.title" />
  </npsobj>
</npsobj>
<npsobj insertvalue="var" name="uplink" />