Die Hauptnavigation in Weblication® Projekten wird als separate Datei erzeugt und beinhaltet alle Informationen zu den Links auf beliebige Seiten. Anders als in anderen Systemen wird die Navigationsstruktur hierbei nicht automatisch (aus Verzeichnisstrukturen oder ähnlichem) erzeugt, sondern besteht aus einer Datei, in der alle vorhandenen Verlinkungen im XML-Format abgelegt werden:
/[IHR-INHALTS-PROJEKT]/wGlobal/content/navigations/standard.wNavigation.php
Das Speichern der Link-Struktur in einer eigenständigen Datei ohne Abhängigkeiten zur Verzeichnis- und Dateistruktur auf dem Server bietet mehrere Vorteile:
Die Navigationsdatei(en) wird innerhalb eines Weblication® Projektes als "normale" XML-Inhaltsdatei geführt und ist somit ebenfalls eingecheckt. So ist es möglich, beliebigen Benutzern Berechtigungen zur Bearbeitung dieser Datei zu geben, die Datei in einen Workflow zu stellen oder um individuelle Daten anzureichern.
<?php $version="1.0"; $encoding="UTF-8"; ?> <?php exit; ?> <wNavigation version="5.0"> <wd:extension type="weblication" version="5.0"> <wd:meta> <wd:title>Standardnavigation</wd:title> <wd:description/> <wd:keywords/> <wd:thumbnail/> <wd:robots value="index"/> <wd:modification name="" time=""/> <wd:creation name="" time=""/> </wd:meta> <wd:status> <wd:online from="" status="on" to=""/> <wd:type value=""/> </wd:status> <wd:permissions> <wd:owner name="admin" role=""/> </wd:permissions> <wd:cache expires="{wGetValueOfDefaultExtension()}"/> </wd:extension> <navPoint title="Aktuelles" link="/[IHR-INHALTS-PROJEKT]/aktuelles/index.php" text="Aktuelles" id="1"></nav> <navPoint title="Kontakt" link="/[IHR-INHALTS-PROJEKT]/kontakt/index.php" text="Kontakt" id="2"></nav> <navPoint title="Inhaltsverzeichnis" link="/[IHR-INHALTS-PROJEKT]/inhaltsverzeichnis/index.php" text="Inhaltsverzeichnis" id="3"></nav> <navPoint title="Impressum" link="/[IHR-INHALTS-PROJEKT]/impressum/index.php" text="Impressum" id="4"></nav> <navPoint title="Suche" link="/[IHR-INHALTS-PROJEKT]/search/index.php" text="Volltextsuche" id="5"></nav> </wNavigation>
Der Aufruf der Funktion, welche die Navigation am gewünschten Punkt im XHTML-Quelltext erzeugt, wird im XSLT-Stylesheet notiert:
<wsl:navigation
data="/[IHR-INHALTS-PROJEKT]/wGlobal/content/navigations/standard.wNavigation.php"
template="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/navigations/main.wNavigation.php"
mode="tree"
navid="$PARAM['navid']"
/>
Diese Funktion erzeugt durch eine XSL-Transformation den XHTML-Quelltext, welcher an der Stelle des Funktionsaufrufs in die Ausgabe kopiert wird. Hierbei stehen folgende Parameter zur Verfügung:
data | Pfad zur XML-Datei, in welcher die Informationen über die Navigationsstruktur abgelegt sind. Standardwert: /de/wGlobal/content/navigations/standard.wNavigation.php |
template |
Pfad zum XSLT-Stylesheet, welches die Regeln und den XHTML-Code für die Darstellung der Navigation beinhaltet. |
mode | Modus der Navigation Mögliche Werte:
|
navid | Übergabe der NAVID zur Anzeige des aktiven Navigationspunktes. Systemparameter, nicht verändern! Wert: $PARAM['navid'] |
Zur Darstellung der Navigation wird ein XSLT-Stylesheet verwendet, der Pfad zu dieser Datei wird als Parameter "template" im Aufruf angegeben (siehe Abschnitt oben).
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsl="http://weblication.de/5.0/wsl" version="1.0"> <xsl:output method="xml" indent="no" omit-xml-declaration="yes" encoding="UTF-8"/> <xsl:template match="/wNavigation"> <div id="navigationMain"> <ul class="navLevel1Container"> <!--Hier steht später die generierte Navigation--> <xsl:apply-templates select="/wNavigation/navPoint"/> </ul> </div> </xsl:template> <!--Dieses Template wird auf jeden Navigtionspunkt des ersten Levels angewandt--> <xsl:template match="/wNavigation/navPoint"> <xsl:choose> <xsl:when test="@selected = '1' and @open = '1'"> <li class="navLevel1OpenSelected"> <a accesskey="{substring(@text, 1 , 1)}" class="navLevel1OpenSelected" href="{@link}"><span><xsl:value-of select="@text"/></span></a> <ul class="navLevel2Container"> <xsl:apply-templates select="navPoint"/> </ul> </li> </xsl:when> <xsl:when test="@selected = '1'"> <li class="navLevel1Selected"> <a accesskey="{substring(@text, 1 , 1)}" class="navLevel1Selected" href="{@link}"><span><xsl:value-of select="@text"/></span></a> </li> </xsl:when> <xsl:when test="@open = '1'"> <li class="navLevel1Open"> <a accesskey="{substring(@text, 1 , 1)}" class="navLevel1Open" href="{@link}"><span><xsl:value-of select="@text"/></span></a> <ul class="navLevel2Container"> <xsl:apply-templates select="navPoint"/> </ul> </li> </xsl:when> <xsl:otherwise> <li class="navLevel1"> <a accesskey="{substring(@text, 1 , 1)}" class="navLevel1" href="{@link}"><span><xsl:value-of select="@text"/></span></a> </li> </xsl:otherwise> </xsl:choose> </xsl:template>
Der Eintrag eines Links innerhalb der Navigation hat aus dem Standard heraus folgende Struktur:
<navPoint title="Aktuelles" link="/[IHR-INHALTS-PROJEKT]/aktuelles/index.php" text="Aktuelles" id="1242117739874" ></nav>
Diese Struktur kann pro
Projekt individuell erweitert werden (siehe nachfolgend).
Zur Pflege der bestehenden und erweiterten Strukturen läßt sich die bestehende Pflegemaske der Navigation wie folgt anpassen:
Die Pflegemaske zur Navigation können Sie als Administrator direkt in der Bearbeitung eines Navigationsdatei über das Register "Diese Maske anpassen" öffnen und hat folgenden Pfad:
/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/editor/navigation/attributes.wEditorNavpoint.php
<?php $version="1.0"; $encoding="UTF-8"; ?> <?php /* ?> <wEditorNavpoint version="1.0" xmlns:de="de" xmlns:en="en"> <attribute name="title" editor="input" value="" caption="Titel" editable="1" /> <attribute name="name" editor="input" value="" caption="Name" editable="0"/> <attribute name="target" editor="selectbox" valueSelected="" caption="Ziel" editable="1" > <option value="_self">Aktuelles Fenster</option> <option value="_blank">Neues Fenster</option> </attribute> <attribute name="id" editor="input" value="" caption="ID" editable="0"/> <attribute name="accesskey" editor="input" value="" caption="Accesskey" editable="0"/> <attribute name="img" editor="input" value="" caption="Grafik" editable="1"/> <attribute name="imgHover" editor="input" value="" caption="Grafik 2" editable="1"/> <attribute name="opt" editor="input" value="" caption="Zusatzparameter" editable="0"/> <attribute name="multipleLink" editor="selectbox" valueSelected="1" caption="Mehrfachverlinkung" editable="0"> <option value="0">Nein</option> <option value="1">Ja</option> </attribute> </wEditorNavpoint> <?php */?>
Hierbei ist ein Attribut eines Navigationspunktes wie folgt aufgebaut:
name | Name des neuen Attributes Wert: String |
editor | Art des Eingabeinterfaces Werte: input (Einzeiliges Eingabefeld für Text ohne WYSIWYG-Funktionalitäten) selectbox (Auswahlfeld für mehrere Einträge. Hierbei stellen die option-Kindelemente des Attributes die Auswahlmöglichkeiten dar.) |
value | Wert des Eingabefeldes. Zur Vorbelegung mit Standardwerten oder bei option-Elementen Wert: String oder leer |
caption | Angezeigter Name des Feldes Wert: String |
editable | Setzt das Feld auf bearbeitbar Werte: 0|1 (Nicht bearbeitbar, im Editor nicht angezeigt|Bearbeitbar) |
valueSelected | Vorausgewählter Wert bei Selectfeldern. Nur in Verbindung mit editor=selectbox sinnvoll. Werte: String oder leer |
Dieser Struktur folgend lassen sich nun beliebige weitere Attribute für die Pflege eines Navigationspunktes definieren.
// Attribut mit Textfeld als Bearbeitungsmaske: <attribute name="neuesAttribut" editor="input" value="" caption="Anzeigetitel des neuen Attributs" editable="1" /> // Attribut mit Selectbox und drei Werten (option): // (am Beispiel des Link-Zieles und Erweiterung um die Auswahl als Lightbox <attribute name="target" editor="selectbox" valueSelected="" caption="Ziel" en:caption="Target" editable="1" levelsEditable=""> <item de:name="Aktuelles Fenster" en:name="Current window" value="_self"/> <item de:name="Neues Fenster" en:name="New window" value="_blank"/> <item de:name="Lightbox" en:name="Lightbox" value="box"/> </attribute>
Jedes auf diese Weise definierte Attribut steht innerhalb des Navigationstemplates gemäß XSLT/ XPATH als Attribut des Navigationspunktes zur Verfügung:
<xsl:template match="/wNavigation/navPoint"> <xsl:value-of select="@neuesAttribut"/> // Referenzierung eines Attributes des navPoint-Knotens </xsl:template>
Eine eigene Pflegemaske für eine bestimmte Navigationsdatei (z.B. die Meta-Navigation) können Sie wie folgt nutzen:
Legen Sie passend zum Namen der Navigationsdatei (z.B. meta.wNavigation.php) die Datei für die Definition der Pflegemaske an, im Beispiel also:
/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/editor/navigation/meta.attributes.wEditorNavpoint.php
In dieser Pflegemaske können Sie die Attribute passend für die verwendete Navigationsdatei definieren, um so z.B. ein Ziel (oder andere Attribute) pflegbar zu machen.