Skip to content

Example: Main menu

In diesem Beispiel wird Schritt für Schritt demonstriert, wie Sie ein einfaches Hauptmenü mit der imperia Navigationsgenerierung erstellen.

Beispielstruktur im Rubrikenbaum#

Dieses Beispiel basiert auf der folgenden Struktur im Rubrikenbaum. Die Rubrik "Unternehmen" ist hier der strukturelle Wurzelknoten für diese Website. Der Rubrikenbaum hat also insgesamt 3 Ebenen, die Website jedoch nur 2, weil die erste Ebene nur für die Strukturierung benötigt wird.

-Unternehmen
    -Startseite 
    -Über Uns
    -Team
        -Entwicklung
        -Service
        -Vertrieb
    -Kunden
        -Öffentlicher Sektor
        -Banken
        -Universitäten
    -Kontakt

Legen Sie in der Konfigurationsdatei (Standardmäßig site/config/navigation_generator.conf) im Hauptbereich <root> den folgenden neuen Bereich <mainmenu> an.

<mainmenu>
filename = /ssi/navigation/<!--nav_element-->.html
file_startlevel = "0"
file_maxlevel = "0"
content_startlevel = "1"
content_maxlevel = "2"
fulltree = 1

li_snippet <<EOF
    <li>
        <a href="<!--XX-link-->"><!--XX-name--></a>
        <!--XX-ul_content-->
    </li>
EOF

ul_snippet <<EOF
    <ul>
        <!--XX-li_content-->
    </ul>
EOF
</mainmenu>

Erläuterung des Menü-Templates#

Dateiname#

In diesem Beispiel wird nur eine einzelne Menüdatei generiert. Deswegen reicht es auch, dass hier nur eine einzelne Datei für die Speicherung dieses Menüs angegeben wird.

filename = /ssi/navigation/<!--nav_element-->.html

Die Menüdatei wird bei der Ausführung der Navigationsgenerierung im Dokumenten-Root von imperia unter dem Pfad /ssi/navigation/mainmenu.html generiert.

Der Code <!--nav_element--> wird als mainmenu expandiert, also dem Namen dieses Menü-Templates.

Traversierungsoptionen#

Mit den Optionen file_startlevel und file_maxlevel wird angeben, für welche Ebene des angegeben Rubrikenbaum Menüdateien erstellt werden sollen. In einigen Fällen – wie z.B. für die Breadcrumbnavigation – müssen Sie für jede einzelne Ebene eine eigene Datei erstellen, da das Menü auf jeder Ebene etwas anders ist. In diesem Fall wollen wir jedoch ein einfaches Hauptmenü erstellen, dass auf jeder Ebene gleich ist.

Deswegen wird die Menüdatei in diesem Fall nur für den Wurzelknoten "Unternehmen" erstellt, also die Ebene 0. Und daher muss auch bei beiden Optionen der Wert 0 eingetragen werden.

Mit den Optionen content_startlevel, content_maxlevel und fulltree wird gesteuert, welche Rubriken bei der Generierung der Menüdatei in den Blick genommen werden sollen.

In diesem Fall sollen alle Rubriken unterhalb der Rubrik "Unternehmen" im Menü aufgenommen werden. Daher wird die 0te Ebene übersprungen und content_startlevel auf 1 gesetzt. Die Variable content_maxlevel ist hier auf 2 gesetzt, weil auch die zweite Ebene – aber nicht mehr – in das Menü aufgenommen werden soll. Die Variable fulltree ist auf 1 gesetzt, damit über jede Rubrik unter dem angegebenen Wurzelknoten traversiert wird.

Die beiden Variablen li_snippet und ul_snippet sind feststehende Variablen, mit denen Sie das Menü-Template erstellen. Das Funktionsprinzip dieses Templates ist die Rekursion. Das bedeutet, dass sie beiden Templates sich li_snippet und ul_snippet so lange gegenseitig aufrufen, bis alle – über die Traversierungsoptionen – konfigurierten Rubriken abgearbeitet sind.

ul_snippet <<EOF
    <ul>
        <!--XX-li_content-->
    </ul>
EOF

Das ul_snippet setzt in diesem Beispiel nur das HTML-Element unordered list <ul> und ruft darin wiederum das li_snippet auf.

li_snippet <<EOF
    <li>
        <a href="<!--XX-link-->"><!--XX-name--></a>
        <!--XX-ul_content-->
    </li>
EOF

Das li_snippet setzt das HTML-Element list item <li> und darin einen Link, der mit dem Namen der jeweiligen Rubrik gelabelt ist. Außerdem wird in dem li_snippet wiederum das ul_snippet aufgerufen.

Um die Menü-Datei zu genieren, gibt es verschiedene Möglichkeiten, die im Kapitel Menü generieren beschrieben werden.

Als imperia-Webentwickler können Sie dazu das Skript site_navigation_generator.pl verwenden. Das Skript erwartet als Parameter die Node-ID der Wurzelrubrik, also in diesem Fall die Node-ID der Rubrik "Unternehmen", z.B. /10/26.

Sie rufen das Skript, das Sie im imperia-Verzeichnis unter site/bin finden, folgendermaßen auf:

perl site/bin/site_navigation_generator.pl -i /10/26

Anschließend sollte sich die generierte Menüdatei angegebenen Verzeichnis im Dokumenten-Root von imperia befinden. Also beispielsweise im Pfad /htdocs/ssi/navigation/mainmenu.html.

Generierte Menü-Datei#

Wenn Sie die Menüdatei nach der oben angegebenen Navigationskonfiguration generiert haben, dann wird die Datei folgenden Inhalt haben:

<ul>
    <li>
        <a href="/unternehmen/startseite/index.html">Startseite</a>
    </li>
    <li>
        <a href="/unternehmen/ueberuns/index.html">Über Uns</a>
    </li>
    <li>
        <a href="/unternehmen/team/index.html">Team</a>
        <ul>
            <li>
                <a href="/unternehmen/team/entwicklung/index.html">Entwicklung</a>
            </li>
            <li>
                <a href="/unternehmen/team/service/index.html">Service</a>
            </li>
            <li>
                <a href="/unternehmen/team/vertrieb/index.html">Vertrieb</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="/unternehmen/kunden/index.html">Kunden</a>
        <ul>
            <li>
                <a href="/unternehmen/kunden/oeffentlicher-sektor/index.html">Öffentlicher Sektor</a>

            </li>
            <li>
                <a href="/unternehmen/kunden/banken/index.html">Banken</a>
            </li>
            <li>
                <a href="/unternehmen/kunden/universitaeten/index.html">Universitäten</a>

            </li>
        </ul>
    </li>
    <li>
        <a href="/unternehmen/kontakt/index.html">Kontakt</a>
    </li>
</ul>