Der primäre Verwendungszweck von RenderTags ist das Rendern von Navigationen. Beim Rendern des Eintrags einer Navigation fragt man mit RenderTags Informationen über die Navigations-Struktur ab und steuert so die Ausgabe der Navigation.
Mit dem Navigation Manager legt mandie Navigations-Struktur für das Projekt fest. Diese Navigations-Struktur liegt anschließend als Navigations-Index in der Datenbank des Management Server und besteht aus Index-Objekten. Beim Rendern der Navigation werden die Index-Objekte des Navigations-Index von den Navigations-Templates gerendert, die man zuvor in den Navigations-Bereichen festgelegt hat.
In den Navigations-Templates verwendet man RenderTags, um den jeweiligen Navigations-Punkt im Kontekt der aktuellen Seite zu rendern. Mit den RenderTags innerhalb der Navigations-Templates hat man deshalb Zugriff auf die Index-Objekte des Navigations-Index. Damit kann man beispielsweise abfragen, ob der aktuell gerenderte Navigations-Punkt untergeordnete Index-Objekte bzw. Seiten hat.
Die Navigation setzt man mit dem ObjectLoader (Provider) Navigation:OutputArea
in einer Content-Klasse vom Typ Masterpage ein. Eine ausführliche Beschreibung des ObjectLoader (Provider) zum Ausgeben einer Navigation, findet man in der Online-Hilfe im Abschnitt Einen Navigations-Bereich mit dem Navigation Tag ausgeben oder im Artikel Provider: Navigation.
Ein Navigations-Template rendert ein Index-Objekt zu einem Eintrag in einer Navigation. Mit dem Navigation RenderTag navigation:nextlevel
wird innerhalb eines Navigations-Templates die Verarbeitung der untergeordneten Index-Objekte im Kontext der aktuellen Seiten angestoßen. Diese werden wiederum durch Navigations-Templates gerendert.
<navigation:nextlevel>
Ein Beispiel für die Verwendung dieses Navigation RenderTags findet man im Abschnitt Beispiel: Generieren einer Sitemap in der Online-Hilfe.
Für Experten: Rekursive Abarbeitung des Navigations-Index
Der Navigations-Index wird rekursiv durch Navigations-Templates abgearbeitet. Das bedeutet: Bei den Index-Objekten der obersten Ebene des Navigations-Indexes beginnend, werden die entsprechenden Navigations-Templates aufgerufen. Anschließend werden die Templates durch den RenderTag navigation:nextlevel
für die jeweiligen untergeordneten Index-Objekte aufgerufen.
An welcher Position man sich innerhalb der rekursiven Abarbeitung befindet, kann man mit dem ObjectLoader (Provider) Context:CurrentLevelCount
und Context:CurrentDepth
abfragen. Auf das aktuelle Index-Objekt, greift man mit dem ObjectLoader (Provider) Context:CurrentIndex
zu.
Anmerkung: Standardeinstellungen des Navigation-Service anpassen
Der OpenText WSM Navigation-Service ist für die Verarbeitung von RenderTags und die Navigation zuständig. Die Cluster-Kommunikation führt den Prozess OpenText.WS.MS.ObjectProcessService.exe aus, der diese Aufgaben dann übernimmt. Um das Rendern von navigation:nextlevel
in Navigations-Templates oder anderen navigationsbezogenen Cache-Mechanismen zu beeinflussen. Und damit die Performance zu verbessern, kann man die Datei OpenText.WS.MS.ObjectProcessService.exe.config, in der die Einstellungen für den Prozess OpenText.WS.MS.ObjectProcessService.exe definiert sind, entsprechend anpassen.
Die Datei OpenText.WS.MS.ObjectProcessService.exe.config enthält ein Element <appSettings>, in dem man die folgenden Schlüsselwerte anpassen kann, die sich dann auf die Leistung des Renderings auswirken:
navigation:nextlevel
in den Navigations-Templates verwendet werden. Der Standardwert ist 25.
Quelle: OpenText Web Site Management Server Online-Hilfe
Ausführliche Schreibweise für den RenderTag navigation
<reddot:cms> <navigation areaname="MainMenu" /> </reddot:cms>
Kurzschreibweise für den ObjectLoader (Provider) Navigation
<%!! Navigation:OutputArea(String:MainMenu) !!%>
Quelle: OpenText Web Site Management Server Online-Hilfe
Schritt 1: Content-Klasse und Navigations-Struktur erstellen
Home - News - Archive - Shop
Schritt 2: Navigationstemplate erstellen
<li> <%!! Context:CurrentIndex.Page.Headline !!%> <reddot:cms> <if> <query valuea="Context:CurrentIndex.HasChildren()" operator="==" valueb="Bool:True"> <htmltext> <ul> <navigation:nextlevel> </ul> </htmltext> </query> </if> </reddot:cms> </li>
Schritt 3: Navigations-Bereich erstellen
Navigationsbereiche - Sitemap - navigation (Selektiert & Nicht Selektiert)
Schritt 4: Navigation einfügen
Navigation
in der Content-Klasse Master ein. Mit diesem ObjectLoader (Provider) Navigation
wird während des Rendering der Seite, die Navigation des Navigations-Bereichs Sitemap an der Stelle im Template der Content-Klasse eingefügt.<ul> <%!! Navigation:OutputArea(String:Sitemap)!!%> </ul>
<ul>
) legt man hier an, damit man die Ergebnisse aus der Navigation als HTML Listen-Einträge gerendert bzw. dargestellt werden können.
Ergebnis
<ul> <li>Home <ul> <li>News <ul> <li>Archive</li> </ul> </li> <li>Shop</li> </ul> </li> </ul>
Tipp: Umfangreichere Beispiele
Dieses Beispiel beschreibt nur eine sehr einfache Ausgabe. Umfangreichere Beispiele findet man im Abschnitt Beispiele für Navigationen mit RenderTags in der Online-Hilfe.
Es gibt auch die Möglichkeit eigene s.g. Custom RenderTags mit .NET Framework zu erstellen und dann beim Template Rendering aufzurufen. Dazu findet man im OpenText™ Developer Network Beispiel Code und eine ausführliche Anleitung.
... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.
Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.