9DECAE1C81FF44CD900F5C17C8F05086
  • Thomas Pollinger
  • 20.11.2019
  • DE

How-To: Rahmenseite vs. Masterseite

Im Management Server gibt es eine strikte Unterscheidung zwischen einer Masterseite (Masterpage) und einer Rahmenseite. Das eine hat etwas mit dem Navigation Manager zu tun, das andere jedoch nicht. Leider gibt es an der ein oder anderen Stelle im System eine ungeschickte Wahl bei der Beschreibung bzw. Benennung von Dingen. Dies möchte ich in diesem Artikel auflösen und mit Ausschnitten aus der Online-Hilfe untermauern.
 

Abgrenzung Rahmenseite und Masterseite

Auszug aus: Navigation Manager Online-Hilfe / 7.3.1 - Eigenschaften:

CurrentMasterPage: Die aktuelle Rahmenseite als Objekt Page.

Das Objekt CurrentMasterPage bezieht sich nicht auf die Eigenschaft Masterpage der Content-Klasse, sondern auf die Rahmenseite. Die Rahmenseite ist in diesem Zusammenhang immer die äußerste Seite, die angezeigt wird.

 

Details zur Rahmenseite

Auszug aus: Content-Klassen Online-Hilfe / 3.3.1 - Container: Funktionen:

Die Seiten von Web-Projekten, beispielsweise in HTML, bestehen aus Code, der nacheinander interpretiert und dargestellt wird. Mit dem Management Server kann man den Code in logische Bausteine unterteilen, um eine hohe Wiederverwertbarkeit von Code zu erreichen.

Zu diesem Zweck teilt man den Code einer eigentlich zusammengehörenden Seite in sinnvolle Abschnitte auf. Zu jedem Abschnitt der Web-Seite erstellt man eine eigene Content-Klasse, auf der dann eine Seite basiert. Eine Web-Seite wird im Management Server aus mehreren Seiten zusammengestellt. Mit Hilfe des Container-Elements werden die Seiten in der Projektstruktur im SmartTree oder im SmartEdit miteinander verlinkt. Das Container-Element ist ein Struktur-Element und wird auch als MultiLink bezeichnet. Ein MultiLink erlaubt es, mehrere Seiten an nur einem sichtbaren Link zu verknüpfen.

Der Container setzt für die Seitenvorschau, die Ansicht in SmartEdit und für die Publizierung der Seiten den Code aller verknüpften Seiten zu einem Code zusammen und stellt ihn als eine Seite dar. Die Seite, in der sich der Container befindet, wird daher auch als Rahmenseite bezeichnet, da sie den Rahmen für weitere Seiten bildet.

Anmerkung: Auf einen Blick

  • Container-Elemente ermöglichen das Zusammensetzen von Code aus mehreren Seiten.
  • Eine Seite im Management Server muss keiner kompletten HTML-Seite entsprechen, sondern kann ein Bestandteil einer großen zusammengesetzten Seite sein. Eine Seite kann also auch lediglich ein Code-Fragment enthalten.
  • Container-Elemente können in beliebiger Menge und beliebiger Tiefe verschachtelt werden.
     
Auszug aus: Content-Klassen Online-Hilfe / 6.6.3 - Breadcrumb-Blockmarkierung:

Anmerkung: Variationen zur Breadcrumb-Navigation

Die jeweils aktuell angezeigte Seite wird in der Breadcrumb-Navigation nicht angezeigt.

Um dennoch die aktuell angezeigt Seite in der Breadcrumb-Navigation anzuzeigen, habt man die folgenden Möglichkeiten:

  • man kann das Überschrifts-Element in der Breadcrumb darstellen lassen.
  • man kann den Sitemap-Namen in der Breadcrumb darstellen lassen.

Wenn die Überschrift der aktuellen Seite ebenfalls in der Breadcrumb-Navigation angezeigt werden soll, erstellt man direkt hinter der Blockmarkierung Breadcrumb ein Überschrifts-Element. Jede Seite, die über eine Breadcrumb-Navigation verfügen soll, kann hierfür beispielsweise den folgenden Code erhalten:

Wenn der Sitemap-Name der aktuellen Seite in der Breadcrumb-Navigation angezeigt werden soll, erstellt man direkt hinter der Blockmarkierung Breadcrumb ein Info-Element vom Typ Seite: Sitemap-Name. Danach aktiviert man die Checkbox zu Daten der Seite im Targetcontainer verwenden, um den Sitemap-Namen der aktuellen Seite, die in einem Targetcontainer angezeigt wird, an der Rahmenseite anzeigen zu lassen.
 

Auszug aus: SmartEdit Online-Hilfe / 4.4.26 & SmartTree Online-Hilfe / 7.2.12 - Seitenvorschau nach Datum:

Beispiel: Seitenvorschau nach Datum für Seiten in einer Liste oder in einem Container

Im Dialogfenster Seiten-Verlinkung und -Erscheinungszeitraum bearbeiten kann man für die Verlinkungen einer Seite mit Struktur-Elementen festlegen, wann diese aktiv sind. Wenn eine Verlinkung nicht aktiv ist, wird diese nicht angezeigt (z.B. im SmartEdit oder in der Seitenvorschau).

Wenn die Verlinkung einer Seite mit einer Liste beispielsweise nicht aktiv ist, wird der entsprechende Link zur Seite nicht in der Seite angezeigt, in der sich das Listen-Element befindet. Somit kann die betreffende Seite an dieser Stelle des Projekts nicht aufgerufen werden und ist dadurch nicht erreichbar.

Für eine Seite, die mit einem Container verknüpft ist, bedeutet das, dass der Inhalt der Seite nicht in der Rahmenseite angezeigt wird, solange der Startzeitpunkt des Erscheinungszeitraums nicht erreicht ist. Über die Seitenvorschau nach Datum kann man komfortabel für die Rahmenseite unterschiedliche Erscheinungszeitpunkte einstellen und sich die Inhalte der Seite im Container in der Rahmenseite ansehen, ohne die Ansichtseinstellungen ändern zu müssen.
 

Auszug aus: Navigation Manager Online-Hilfe / 5.1.1 - Allgemeine Einstellungen bearbeiten:

Alternative Ermittlung der Dateiendung bei Verwendung von Target-Containern

Aktiviert man diese Checkbox, wenn man die Ermittlung der Dateiendungen für Seiten ändern möchte, die in einem Target-Container dargestellt werden. Wenn keine andere Einstellung vorgenommen wurde, wird für die Dateiendung einer solchen Seite zunächst die Endung verwendet, die im Dialogfenster Eigenschaften bearbeiten für die Seite explizit festgelegt wurde. Ist in diesem Dialogfenster keine Dateiendung angegeben worden, wird die Dateiendung verwendet, die für das Template der Rahmenseite (Seite, in der sich der Target-Container befindet) festgelegt wurde. Über die beiden folgenden Optionen können Sie ein abweichendes Verhalten festlegen:

  • Rahmenseite bestimmt die Dateiendung
    Die Dateiendung wird ausschließlich über die Rahmenseite ermittelt. Dabei wird die Dateiendung verwendet, die im Dialogfenster Eigenschaften bearbeiten explizit für die Rahmenseite festgelegt wurde. Ist in diesem Dialogfenster keine Dateiendung angegeben worden, wird die Dateiendung verwendet, die für das Template der Rahmenseite festgelegt wurde.
     
  • Die im Target-Container darzustellende Seite bestimmt die Dateiendung
    Die Dateiendung wird ausschließlich über die Seite ermittelt, die im Target-Container dargestellt wird. Dabei wird die Dateiendung verwendet, die im Dialogfenster Eigenschaften bearbeiten explizit für diese Seite festgelegt wurde. Ist in diesem Dialogfenster keine Dateiendung angegeben worden, wird die Dateiendung verwendet, die für das Template der Seite festgelegt wurde.

 

Details zur Masterseite (Masterpage)

Auszug aus: Navigation Manager Online-Hilfe / 2.1 - Masterpages:

Masterpages sind Seiten in der Projektstruktur auf Basis einer Content-Klasse, welche die Eigenschaft Masterpage hat. Alle Seiten auf Basis einer solchen Content-Klasse werden automatisch in die Navigationsstruktur aufgenommen.

  • Symbol im SmartTree
    Content-Klassen mit der Eigenschaft Masterpage sind mit dem Symbol  im SmartTree gekennzeichnet.
     
  • Definiertes Listen-Element
    Wenn man einer Content-Klasse die Eigenschaft Masterpage zuweist, kann man ein Listen-Element festlegen. Verknüpfungen über dieses Listen-Element entsprechen Verknüpfungen innerhalb der Navigationsstruktur.
     
Auszug aus: Content-Klassen Online-Hilfe / 5.5.29 - Masterpage Einstellungen:

Masterpages sind Content-Klassen, auf deren Basis im Navigation Manager eine Navigationsstruktur aufgebaut wird.

Man hat folgende Optionen:

  • Als Masterpage verwenden
    Man aktiviert die Checkbox um festzulegen, dass die Seiten, die auf dieser Content-Klasse basieren, für die Navigationsstruktur im Navigation Manager verwendet werden.
     
  • Verfügbare Listen
    Es werden alle Listen-Elemente der Content-Klasse zur Auswahl angeboten. Man wählt die Liste, die in der Navigation für die nächste Navigationsebene verwendet werden soll. Wenn man keine Liste aktiviert, können basierend auf dieser Content-Klasse nur Seiten der untersten Navigationsebene erstellt werden. Das heißt, auf diese Seiten können in der Navigationsstruktur keine weiteren Navigationsebenen folgen.
     
Auszug aus: Navigation Manager Online-Hilfe / 2.2 - Navigationsstruktur:

Die Navigationsstruktur ist die hierarchische Anordnung der Masterpages im Navigation Manager. Die Navigationsstruktur basiert auf der Verknüpfung der Masterpages über ein festgelegtes Listen-Element. Jede Masterpage kann in der Navigationsstruktur nur einmal vorkommen.

Navigationsstruktur bearbeiten: Die Navigationsstruktur kann man im Dialogfenster Navigationsstruktur des Navigation Manager pflegen. Damit steuert man die Verknüpfung in der Projektstruktur. Änderungen der Verknüpfungen der Masterpages, die man in der Projektstruktur vornimmt, wirken sich auf die Navigationsstruktur aus.

Anmerkung: Mehrfach verknüpfte Masterpages

Wenn eine Masterpage in der Projektstruktur mit zwei für die Navigation festgelegten Listen-Elementen verknüpft ist, wird nur der Hauptlink in der Navigationsstruktur angezeigt.
 

Auszug aus: Navigation Manager Online-Hilfe / 4.1 - Content-Klassen für Masterpages erstellen:

Im ersten Schritt erstellt man die Content-Klassen für die navigationsrelevanten Seiten und weisen diesen die Eigenschaft Masterpage zu.

Anmerkung: Notwendigkeit des Listen-Elements

Dieser Schritt schließt auch die Erstellung eines Listen-Elementes mit ein. Das Festlegen eines Listen-Elements ist nicht zwingend erforderlich. Da aber die Verknüpfung der Seiten über das Listen-Element realisiert wird, kann eine Masterpage ohne definiertes Listen-Element in der Navigationsstruktur keine untergeordneten Seiten haben.

So erstellen Sie eine Content-Klasse für Masterpages:

  1. Man erstellt eine Content-Klasse, auf der die Masterpages basieren.
  2. Man erstellt ein Listen-Element in dieser Content-Klasse. Wenn man Seiten auf Basis dieser Content-Klasse erstellt, werden die Seiten an diesem Listen-Element auch in der Navigationsstruktur untergeordnete Seiten sein.
  3. Nun markiert man die Content-Klasse im SmartTree und klickt im Aktionsmenü auf Masterpage Einstellungen.
  4. Im Dialogfenster Masterpage Einstellungen aktiviert man die Checkbox Als Masterpage verwenden und wählt das Listen-Element aus, das für die Navigation verwendet werden soll.
  5. Diese Schritte wiederholt man für die restlichen Content-Klassen des Typs Masterpages.
     
Auszug aus: SmartTree Online-Hilfe / 6.1.1 - Mit dem Navigation Manager arbeiten:

Mit dem Navigation Manager steht ein komfortables Hilfsmittel zur Erstellung von dynamischen Navigationsmenüs zur Verfügung.

Für jedes Navigationsmenü definiert man im Navigation Manager einen Navigationsbereich. Dabei legt man fest, welche Content-Klassen die Funktion und das Aussehen der Navigationsebenen bestimmen.

In der Navigationsstruktur baut man die Struktur der Seiten auf, die direkt von der Navigation aufgerufen werden sollen. Diese Seiten basieren auf Content-Klassen, die als Masterpage definiert sind.

Folgende grundlegende Schritte sind für den Aufbau einer Navigation mit dem Navigation Manager notwendig.

Schritt 1: Content-Klassen für die navigationsrelevanten Seiten erstellen (Masterpage)

Für die Seiten, die direkt über die Navigation aufgerufen werden sollen, erstellen Sie eine Content-Klasse mit einem Listen-Element. Diese Liste kann direkt als Struktur-Element der Content-Klasse erstellt werden und muss nicht in den Templatecode eingefügt werden. Sie dient als Verknüpfungspunkt für die folgende Navigationsebene. Damit Sie im Navigation Manager basierend auf dieser Content-Klasse Seiten erstellen können, muss die Content-Klasse als Masterpage festgelegt werden. Diese Einstellung nehmen Sie direkt an der Content-Klasse über den Aktionsmenüpunkt Masterpage Einstellungen vor.
 

Auszug aus: Navigation Manager Online-Hilfe / 7.4 - Provider Store:

Mit dem ObjectLoader (Provider) Store kann man während des Renderns der Seite vorübergehend einen Wert speichern. Jeder Store umfasst einen Namen und einen Wert. Der Name muss vom Typ String sein. Der Wert kann ein beliebiges Element, das von einem anderen RenderTag  oder ObjectLoader (Provider) abgerufen werden kann, oder eine direkt zugewiesene Zeichenfolge sein.

Für den ObjectLoader (Provider) Store gelten folgende Einschränkungen:

  • Wenn ein RenderSpot mit genau dem gleichen Code beim Rendern einer Seite mehrere Male verwendet wird, wird er nur einmal ausgeführt. Jede Instanz eines RenderTag oder ObjectLoaders wird durch das gleiche Ergebnis ersetzt. Dies gilt auch, wenn anstelle der RenderSpots die Kurzschreibweise verwendet wird, jedoch nicht, wenn die Kurzschreibweise in einem RenderSpot verwendet wird.
     
  • Standardmäßig wird der Bereich eines gespeicherten Werts auf den Thread beschränkt, in dem er definiert ist. Aufgrund der Verwendung von Multithread-Rendering bei Navigationsbereichen können die Stores nicht zwischen Navigationsbereichen und Masterpages ausgetauscht werden. Wenn man beispielsweise einen Store im Masterpage-Template oder in einer Container-Seite der Masterpage definiert, kann der Wert des Stores nicht beim Rendern des Navigationsbereichs abgerufen werden. In solchen Fällen kann man den Navigationsbereich sequenziell ausführen.

 

Fazit 

Es ist also wichtig, dass man für den Projekt- und Content-Klassen-Bau den Unterschied zwischen einer Rahmenseite und Masterseite (Masterpage) sehr genau kennt. Dazu kommt noch, dass man bei der Verwendung des Template Renderings auch noch diese Eigenarten berücksichtigen sollte. Ein persönlicher Wunsch von mir wäre, wenn man hier mehr Klarheit und Eindeutigkeit innerhalb des Management Server bei Benennung herstellen könnte. Vorschlag meinerseits: Es gibt Seiten, Rahmenseiten und Navigationsseiten (vormals Masterpage) und jeder Typ hat eine eindeutige Funktionsbeschreibung. Dies sollte sich dann auch in den RenderTag bzw. ObjektLoadern usw. durchgängig bei der Bezeichnung/Benennung von Eigenschaften bzw. Methoden wiederspiegeln. ;) 


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