9E6668BD45054600ACD705004B8251AB
  • Thomas Pollinger
  • 14.06.2019
  • DE

Navigation: Ausgabe der Navigationbereiche

 

Allgemein

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.

 

Hinweise

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:

  • RenderThreads: Anzahl der Threads, die zum Rendern von navigation:nextlevel in den Navigations-Templates verwendet werden. Der Standardwert ist 25.
  • ClusterThreads: Anzahl der Threads, die für die Arbeit an Cluster-Aktualisierungen verwendet werden. Der Standardwert ist 10. OpenText empfiehlt, mindestens einen Cluster-Thread je Knoten im Cluster zu verwenden. Ein Cluster mit 12 Knoten sollte beispielsweise mindestens 12 Cluster-Threads verwenden.
  • CacheMemory: Legt fest, wie viel Speicherplatz für die Elemente im Cache verwendet wird. Die Standard-Arbeitsspeichergröße beträgt 2500 MB. Sobald der angegebene Grenzwert erreicht ist, werden Elemente aus dem Cache gelöscht. Der Prozentsatz der gelöschten Elemente ist in CacheRelease festgelegt.
  • CacheRelease: Legt den Prozentsatz der Elemente fest, die aus dem Cache gelöscht werden, sobald die in CacheMemory festgelegte Cache-Größe erreicht ist. Der Standardwert ist 30.

 

Schreibweisen

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) !!%>
    

 

Beispiele

Quelle: OpenText Web Site Management Server Online-Hilfe

Schritt 1: Content-Klasse und Navigations-Struktur erstellen

  • Als erstes erstellt eine Content-Klasse Master mit der Eigenschaft Masterpage und einem entsprechenden Listen-Element. Dann baut man auf Basis dieser Content-Klasse die folgende Navigations-Struktur auf:
  • Home
      - News
        - Archive
      - Shop
    


Schritt 2: Navigationstemplate erstellen

  • Nun legt man die Content-Klasse navigation mit dem folgenden Inhalt an:
  • <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>
  • Diese Content-Klasse ist das Navigations-Template, mit dem die Einträge aus dem Navigations-Index (Navigation) gerendert werden.


Schritt 3: Navigations-Bereich erstellen

  • Als nächstes erstellt man einen Navigations-Bereich Sitemap und ordnet das Navigations-Template navigation mit den Einstellungen Alle Ebenen und Selektiert & Nicht Selektiert im Navigation Manager zu:
  • Navigationsbereiche
      - Sitemap
        - navigation (Selektiert & Nicht Selektiert)
    


Schritt 4: Navigation einfügen

  • Als letzten Schritt fügt man den folgenden ObjectLoader (Provider) 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>
  • Hinweis: Die Liste (<ul>) legt man hier an, damit man die Ergebnisse aus der Navigation als HTML Listen-Einträge gerendert bzw. dargestellt werden können.


Ergebnis

  • An der Position, an der man den Navigations-Bereich Sitemap eingefügt hat, wird nun die Navigation mit dem folgenden HTML-Markup gerendert.
  • <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.

 

Custom RenderTag

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.

 

Gilt für

  • OpenText™ Web Site Management Server
    Release 16.0.3
  • Letztes Artikelupdate
    27.06.2019

 

Siehe auch


Über den Autor:
Thomas Pollinger

... 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.