Der Content Manager und die Template Engine rufen Link-Funktionen auf, wenn Versionen exportiert oder in der integrierten, der separaten Vorschau sowie der Live-Vorschau angezeigt werden. Die Funktionen geben Ihnen die Möglichkeit, Link-Tags zu modifizieren und erlauben damit URL-Rewriting. Für jedes Tag, das einen URI (Uniform Ressource Identifier) enthalten kann, werden zwei Funktionen aufgerufen, jeweils einer für das öffnende und das schließende Tag.
Während des Exports Tcl-Prozeduren aufzurufen, kann die
Exportgeschwindigkeit negativ beeinflussen. Die Link-Funktionen sind
daher voreingestellt abgeschaltet. Sie können aktiviert werden, indem
der Systemkonfigurationseintrag
export.wantLinkCallback
auf YES
gesetzt wird. Mit dem Wert NO
lassen sich
die Funktionen wieder deaktivieren.
Die Namen der Funktionen lauten linkCallback
für das öffnende
und linkCallbackCloseTag
für das schließende Tag.
Der Content Manager und die Template Engine rufen die
linkCallback
-Prozedur entsprechend der
folgenden Definition auf:
proc linkCallback {tagName srcId absSrcPath \ expId absExpPath relExpPath attrList} {}
Die Argumente haben die folgende Bedeutung:
tagName
: der Name des Link-Tags.srcId
: die ID der Quelldatei, also der Datei, das
das Link-Tag enthält.absSrcPath
: der absolute Pfad der Quelldatei.expId
: die ID der zu exportierenden Datei.absExpPath
: der absolute Pfad der zu
exportierenden Datei.relExpPath
: der in Bezug auf auf die Quelldatei
relative Pfad der zu exportierenden Datei.attrList
: die Liste der Attribute des Tags. Jedes
Attribut ist wiederum eine Liste mit folgenden Elementen:
attrName
: der Name des Tag-Attributs.attrValue
: der Wert des Tag-Attributs.linkId
: die ID des Links.destId
: die ID der Zieldatei.absDestPath
: der absolute Pfad der Zieldatei
(nur bei URI-Attributen, ansonsten die leere Zeichenkette).relDestPath
: der in Bezug auf die Quelldatei
relative Pfad der Zieldatei (nur bei URI-Attributen, ansonsten die
leere Zeichenkette).Bitte beachten Sie, dass ein Argument eine leere Zeichenkette
enthält, wenn der Wert nicht existiert. Dies trifft beispielsweise bei
externen Links auf destId
zu. Die Prozedur muss eine Liste
mit folgenden Elementen zurückgeben:
tagName
: der gegebenenfalls geänderte Name des
Link-Tags.attrList
: die Liste der gegebenenfalls geänderten
Attribute des Tags. Jedes Attribut ist wiederum eine Liste mit
folgenden Elementen:
attrName
: der Name des Tag-Attributs.attrValue
: der Wert des Tag-Attributs.reserved1
: der Wert dieses Elements wird
ignoriert.reserved2
: der Wert dieses Elements wird
ignoriert.reserved3
: der Wert dieses Elements wird
ignoriert.reserved4
: der Wert dieses Elements wird
ignoriert.Dass der Content Manager und die Template Engine die Elemente
reserved1
bis reserved4
in den Subelementen
von attrlist
erwartet, hat den Vorteil, dass Sie die
Ergebnisliste leichter erzeugen können: sie kann aus dem ersten und dem
letzten Argument von linkCallback
zusammengesetzt
werden.
Beispiel (bis Version 6.7.0)
Das folgende Beispiel zeigt, wie man bei externen Links das
http
-Präfix in ein https
-Präfix umwandeln
kann.
proc linkCallback {tagName srcId absSrcPath expId absExpPath relExpPath attrList} { if { "$absExpPath" == "" || "$tagName" != "a" } { return [list $tagName $attrList] } set newList "" foreach attribute $attrList { set key [lindex $attribute 0] set value [lindex $attribute 1] if { "$key" == "href" || "$key" == "title" } { regsub "^http:" $value "https:" value } lappend newList [list $key $value {} {} {} {}] } return [list $tagName $newList] } proc linkCallbackCloseTag {tagName expId absExpPath} { return $tagName }
Ab CMS Fiona 6.7.1: Die mitgelieferte
Link-Callback-Prozedur kann je zu verarbeitendem Tag eine
kundenspezifische Prozedur aufrufen, die auf einfache Weise registriert
werden kann (siehe das folgende Beispiel). Diese Funktionalität ist
in der Datei share/script/cm/serverCmds/linkCallback.tcl
dokumentiert.
Beispiel (ab Version 6.7.1)
::linkCallback::registerHandler "a" "addBlankTarget" namespace eval ::linkCallback { proc addBlankTarget \ {tagName srcId absSrcPath expId absExpPath relExpPath attrList} { if {[existsAttr href] && [string match "http*" [attrValue href]]} { addMissingAttrValue target _blank return [dataAsCallbackResult] } return [unmodified] } }
linkCallbackCloseTag
-ProzedurDie linkCallbackCloseTag
-Prozedur wird vom Content
Manager und von der Template Engine entsprechend der folgenden
Definition aufgerufen:
proc linkCallbackCloseTag {tagName expId absExpPath} {}
Die Argumente haben die folgende Bedeutung:
tagName
: der Name des Link-Tags.expId
: die ID der zu exportierenden Datei.absExpPath
: der absolute Pfad der zu
exportierenden Datei.Als Rückgabewert erwarten die beiden CMS-Applikationen den gegebenenfalls geänderten Namen des Link-Tags.