@-Referenzen

@-Referenzen ermöglichen es, die in Kontexten verfügbaren Werte auch als Werte von HTML-Attributen zu verwenden. Diese Funktion kann nicht durch den Einsatz von NPSOBJ-Anweisungen wie der folgenden erreicht werden:

<!-- NICHT ZULÄSSIG! -->
<a href="/public/file" title="<npsobj insertvalue="var" name="myField" />">...</a>

Hierfür steht eine @-Referenz zur Verfügung:

<!-- Bis Version 6.7.0 -->
<a href="/public/file" title="@myField">...</a>

<!-- Ab Version 6.7.1 -->
<a href="/public/file" title="@{myField}">...</a>

In @-Referenzen können alle Namen verwendet werden, die auch in NPSOBJ-insertvalue-var-Anweisungen eingesetzt werden können, beispielsweise die Namen von Feldern und Exportvariablen.

Für @-Referenzen gelten die folgenden Regeln und Beschränkungen:

  • @-Referenzen sind nur in den Attributwerten von HTML- und NPSOBJ-Tags verfügbar;

  • Bis Version 6.7.0: Nur Tag-Attributwerte, deren erstes Zeichen das @-Zeichen ist, und deren zweites Zeichen ein alphanumerisches Zeichen (0 - 9, a - z, A - Z) oder der Unterstrich ist, werden als @-Referenz betrachtet.

    Ab Version 6.7.1: @-Referenzen beginnen mit dem @-Zeichen, auf das die in geschweifte Klammern eingeschlossene referenzierte Variable folgt. (siehe das Beispiel oben). @-Referenzen können in Attributwerten an beliebiger Stelle stehen, wodurch letztere aus statischem und dynamischem Text zusammengesetzt werden können.

  • Nur bis Version 6.7.0: Sind die beiden ersten Zeichen eines Tag-Attributwertes @-Zeichen, so werden diese in ein einzelnes @-Zeichen umgewandelt, das nicht als der Beginn einer @-Referenz betrachtet wird.

  • @-Referenzen funktionieren weder in Processing-Instructions (PHP, JSP, usw.) noch in HTML-Kommentaren.

  • Das Ergebnis einer @-Referenz-Ersetzung ist immer eine Zeichenkette oder ein Kontext.

  • Ist der mit einer @-Referenz bezeichnete Wert eine Liste (Felder vom Typ Mehrfachauswahl, Kontextlisten), so werden die einzelnen Listenwerte mit dem Zeichen | verbunden.

  • @-Referenzen in URI-Attributen wie href werden beim Import in das CMS nicht in die Linkverwaltung aufgenommen.

  • Kann ein Wert nicht ermittelt werden, so wird die @-Referenz durch die leere Zeichenkette ersetzt.

  • Auch zusammengesetzte Namen wie parent.visiblePath werden unterstützt.

  • @-Referenzen sind nicht dafür geeignet, die Werte von Mehrfachauswahlfeldern zu behandeln. Hierfür sollten Formatter verwendet werden.

  • Wenn mit einer @-Referenz eine Exportvariable referenziert wird, so wird der Wert der Exportvariablen nicht erst ermittelt, wenn die @-Referenz ausgewertet wird, sondern bereits, wenn die Exportvariable gesetzt wird.

  • @-Referenzen, die sich in title- oder target-Attributen von Links im Text (also in Feldern wie dem Hauptinhalt) befinden, haben Vorrang vor den Titeln oder Targets, die über die Linkverwaltung (also beispielsweise mittels Content Navigator) gesetzt werden.

  • Eine über die Linkverwaltung eingetragene @-Referenz wird nicht ausgewertet, sondern als konstante Zeichenkette exportiert. Beim Import wird diese Zeichenkette jedoch zu einer @-Referenz, weil sie nun direkt im Hauptinhalt steht.

Beispiele

Die Zeilenumbrüche und Einrückungen zwischen den NPSOBJ-Anweisungen in den folgenden Beispielen dienen nur der Übersichtlichkeit und dürfen nicht eingegeben werden, weil die Ergebnisse (URLs) sonst defekt wären.

Der folgende Code erzeugt aus einem Feldwert den letzten Teil einer URL und hängt an ihn einen Parameter an:

<!-- Bis Version 6.7.0 -->
<npsobj modifyvar="set" varname="urlpart">
  <npsobj insertvalue="var" name="varname" />?print=YES
</npsobj>
<a href="@urlpart">...</a>

<!-- Ab Version 6.7.1 -->
<a href="@{varname}?print=YES">...</a>

Der folgende Code erzeugt eine URL in Abhängigkeit vom Ergebnis einer konditionalen Auswertung:

<npsobj modifyvar="set" varname="jaOderNein">
  <npsobj condition="isEqual" name1="z" value2="1">Ja-Url</npsobj>
  <npsobj condition="isEqual" name1="z" value2="0">Nein-URL</npsobj>
</npsobj>

<!-- Bis Version 6.7.0 -->
<a href="@jaOderNein">...</a>

<!-- Ab Version 6.7.1 -->
<a href="@{jaOderNein}">...</a>