includePage

Aufgabe

Das Element wird durch den analysierten ("geparsten") Inhalt der referenzierten Seite ersetzt, sofern der aktuelle Benutzer auf diese Seite lesend zugreifen darf. Andernfalls wird das Element ignoriert. Um eine endlose Rekursion bei zyklischen Einfügungen zu vermeiden, ist die maximale Verschachtelungstiefe auf 10 begrenzt.

Syntax

<npspm includePage="path" />

Als path wird ein interner Pfad angegeben, der auf eine Datei vom Typ document (Dokument) oder publication (Ordner) verweist. Das Element hat keinen Inhalt.

Enthält die Seite mit dem angegebenen Pfad interne Links, so verweisen diese – nachdem die Seite inkludiert wurde – möglicherweise nicht mehr auf das gewünschte Ziel. Der Grund hierfür ist, dass Pfade in Links relativ sind. Wird beispielsweise die Seite C in A und B inkludiert, wobei A und B nicht im gleichen Ordner liegen, müsste C relativ zu zwei Positionen in der Ordnerhierarchie sein, um auf das gleiche Ziel zu zeigen.

Dieser Effekt kann dadurch umgangen werden, dass in inkludierten Dateien absolute Links verwendet werden. Allerdings werden für die Vorschau und den Live-Auftritt Links mit unterschiedlichen Präfixen benötigt.

Dies lässt sich mit Hilfe von Velocity-Code (der zur Laufzeit ausgewertet wird) lösen. Das Tool $document hat die Methode getUrl, die einen absoluten Pfad um den jeweiligen Präfix ergänzt und das Ergebnis in eine URL umwandelt. Das folgende Beispiel zeigt dies anhand einer Liste von Links, die mit einer toclist erzeugt wird. Der Code, der die URL erzeugt, wird zunächst in einer Export-Variablen abgelegt, deren Wert dann im href-Attribut per @-Referenz ausgelesen wird:

<npsobj list="toclist">
  <npsobj modifyvar="set" name="robustPath">$document.getUrl(
    <npsobj insertvalue="var" name="visiblePath"/>
  )</npsobj>
  <a href="@robustPath"><npsobj insertvalue="var" name="title"/></a>
</npsobj>

Durch diese Vorgehensweise wird der absolute Pfad des Linkziels (bezogen auf die Ordnerhierarchie) zum Zeitpunkt des Exports ermittelt und mit Code versehen, der zur Laufzeit diesen Pfad in die richtige URL umwandelt.

Beispiel

<npspm includePage="/intranet/docs/public/apps" />