Version: GSB 7Zusammenspiel NavNode – NavTarget – Inhalt
Dieses Kapitel beschreibt das Zusammenspiel von NavNode (Navigationsknoten), NavTarget (Navigationszieldokument) und Inhalt, der auf der Seite dargestellt wird. Bei diesem Konstrukt ist insbesondere das Verhalten der Site bei weiterführenden Verlinkungen auf einzelne Dokumente wichtig. Das Verhalten kann über Konfiguration gesteuert werden.
Einem NavNode wird ein NavTarget (Property "navTarget") zugewiesen, mit dem festgelegt wird, welche Inhalte auf der Seite des Navigationspunktes dargestellt werden. Das NavTarget entspricht sozusagen einer sequentiellen Liste, die beim Aufruf eines NavNode abgearbeitet wird. Das Ergebnis wird dann im Navigationspunktkontext im angezeigt. Über dieses Konstrukt wird die grundlegende Pflege der Inhalte auf der Website vorgenommen.
Wird ein NavNode angewählt, wird das zugehörige NavTarget ermittelt und die damit verbundenen LanguageEnts mit ihren zugewiesenen Layouts gerendert.
Innerhalb der LanguageEnts können Links definiert sein, die auf weitere Seiten verweisen. Hierzu gibt es mehrere Möglichkeiten: Verweise auf einen Navigationsknoten oder Verweise auf ein oder mehrere LanguageEnts.
- Verweis auf einen Navigationsknoten (NavNode):
Soll aus dem LanguageEnt heraus ein anderer Bereich der Site referenziert werden, kann ein Link auf den entsprechenden NavNode gesetzt werden. Dann wird der referenzierte NavNode wie oben beschrieben gerendert.
- Verweis auf ein einzelnes LanguageEnt:
Hier sind zwei Varianten denkbar:
- Der Kontext bleibt erhalten:
Sollen die Navigation und die Seitenstile des aktuellen NavNode erhalten bleiben, wie sie sind, so wird der Link auf das LanguageEnt durch die JSP so gerendert, dass die ID des aktuellen NavNode in der URL codiert wird. Dieser Parameter wird dann auf der Zielseite ausgewertet und das bestehende NavNode beibehalten. Als NavTarget kommt nun allerdings nicht das dem NavNode zugewiesene NavTarget zum tragen, sondern das per ConfigReader hinterlegte DefaultNavTarget für die Volldarstellung, in dem neben anderen "Slots" genau ein "Slot" untergebracht ist, in dem ein DynamicEnt untergebracht ist, das das eigentlich aufgerufene LanguageEnt darstellt. Dieses konfigurierte DefaultNavTarget kann über eine zweite Property innerhalb des NavNodes zu einem NavTarget durch eine für diesen NavNode individuelle Darstellung ersetzt werden (Property langEntTarget). Auch in diesem überschriebenen NavTarget muss es einen entsprechenden Slot für das den Parameter auswertende DynamicEnt geben.Anwendung: Unter einem Navigationsknoten "Special des Monats" werden 5 Seiten aus unterschiedlichen Themenbereichen zusammengestellt, die aufeinander verweisen. Hier sollen sie aber, anders als in Ihren "Haupt-Kontexten" insgesamt im Kontext "Special des Monats" angesiedelt sein.
- Neuer Kontext:
Soll mit dem Link auf das LanguageEnt auch dessen Kontext angewendet werden, so wird der aktuelle NavNode nicht durch die JSP in den Link kodiert (in Wirklichkeit wird ein zusätzlicher Parameter an die URL gehängt, der den Apache dazu veranlasst, den bereits in die URL kodierten NavNode-Prefix wieder zu entfernen). Das bewirkt, dass auf der Zielseite der mit dem LanguageEnt verbundene defaultNavNode gerendert wird und auch hier das zweite NavTarget (Property langEntTarget bzw. das DefaultNavTarget des ConfigReaders) zur Volldarstellung eines einzelnen LanguageEnts verwendet wird.Anwendung: Eine Suchergebnisanzeige soll die Links so gestaltet haben, dass die angeteaserten Links den tatsächlichen Kontext der gefundenen LanguageEnts aktivieren.
Die Entscheidung, wie der Link auf das LanguageEnt gerendert wird, wird im das LanguageEnt darstellenden LOLangEntLeaf konfiguriert (Property: keepNavContext). Hier wird also festgehalten, ob die Zielseiten den aktuellen Kontext behalten sollen oder der Haupt-Kontext des LanguageEnts (Property: defaultNavNode) verwendet werden soll. Diese Festlegung erfolgt also letztendlich bei der Definition des NavTargets für jedes einzelne Fragment der Seite. Somit ist unterschiedliches Verhalten für die einzelnen Seitenbereiche möglich.
Verweis auf ein NavTarget:
Verweise auf NavTargets werden unterbunden, da es dadurch keinen wirklichen Mehrwert gegenüber der Verlinkung auf den zugehörigen NavNode gibt.
Das NavTarget, das an einen NavNode zur Volldarstellung eines per Parameter übergebenen LanguageEnts verlinkt wird (also in die Property langEntTarget), muss ein ausgezeichnetes DynDocIdLangEnt beinhalten, das die Parameter auswertet und das entsprechende LanguageEnt zurückgibt.