Das Einbinden von Menüs wurde bereits im Kapitel HTML Vorlagen konvertieren kurz angesprochen. Dieses Kapitel fasst die notwendigen Schritte zusammen und erklärt die optionalen Menüparameter der Funktion show_menu().

Unterschied mehrere Menüs / mehrere Menüaufrufe

Wenn in WebsiteBaker von mehreren Menüs die Rede ist, sind voneinander unabhängige Menüs gemeint. Daneben besteht die Möglichkeit, ein Menü durch mehrfachen Aufruf der Menüfunktion auf verschieden Arten auszugeben. Diese beiden Verwendungszwecke werden nachfolgend kurz vorgestellt.

Mehrere unabhängige Menüs

Ein Einsatzgebiet für mehrere unabhängige Menüs wurde bereits in der zuvor erstellten Beispieldesignvorlage vorgestellt. Die Designvorlage verwendet zwei Menüs. Das Navigationsmenü am oberen Bildschirmrand enthält die Seiten "Impressum" und "Kontakt". Ein weiteres Menü wird für die Hauptseitennavigation am linken Rand verwendet. Der Vorteil von mehreren Menüs. Man kann beim Anlegen einer neuen Seiten entscheiden, welchem Menü die Seite zugeordnet werden soll und braucht sich nicht um Menülevels, PAGE_IDS etc. zu kümmern.

Für die Verwendung mehrerer Menüs muss ein Eintrag in die info.php des Templates hinzugefügt werden und die zugehörige Funktion im WB-Backend aktiviert werden. 

Mehrfache Menüaufrufe

Die Menüfunktionen (show_menu, show_menu2) können für ein Menü auch mehrfach aufgerufen werden. Dies kann immer dann sinnvoll sein, wenn an einer Stelle z.B. nur die Seiten der ersten Ebene (Root) angezeigt werden sollen, an einer anderen Stelle dann alle übrigen Seiten ab der zweiten Ebene (Root+1). Dieses Verfahren wird z.B. bei mehrsprachigen Webseiten eingesetzt. Ein weiteres Beispiel wäre die Ausgabe eines "Sie sind hier Links" (Breadcrumbs) mit show_menu2 neben dem eigentlichen Navigationsmenü.

Um ein und das selbe Menü (der erste Parameter der Menüfunktion $menu_number ist identisch) auf verschieden Weise auszugeben, reicht es die Menüfunktion mehrfach in der index.php des Templates aufzurufen. Es sind keine weiteren WB-Einstellungen oder Änderungen an der info.php nötig.

Verwendung von mehreren Menüs

Viele Webseiten verwenden mehrere Menüs, um die Navigation übersichtlicher zu gestalten oder um auf wichtige Seiten wie  Impressum oder Kontaktforumular schneller zugreifen zu können. Standardmässig ist die Verwendung eines Menüs in WB vorgesehen. Für jedes zusätzlichen Menü müssen Änderungen in den Dateien index.php und info.php des Templates vorgenommen werden. Die erforderlichen Schritte sind nachfolgend erläutert.

Schritt 1: Anpassen der Templatedateien

Datei: info.php
Für jedes Menü muss in WebsiteBaker ein eindeutiger Name in der info.php Datei des Templates vergeben werden. Diese Information wird über die Array-Variable $menu[x] übergeben. Für das Hauptmenü sollte die Nummer 1 vergeben werden, gefolgt von den zusätzlichen Menüs. Die benötigten Einträge für zwei Menüs sind nachfolgend dargestellt.

// Definition der Menüs
$menu[1]   = 'Hauptnavigation';
$menu[2]   = 'Unternavigation';

Die Namen der Menüs werden im WB Backend bei der Zuordnung der Seiten angezeigt. Es sollten daher sprechende Namen verwendet werden.

Datei: index.php
In der Datei index.php muss für jeds Menü eine WB-Templatefunktion eingefügt werden. Der Parameter der an die Funktion show_menu(x) übergeben wird, entspricht der zugeordneten Nummer in der Datei info.php. Die Funktionsaufruf ist an den Stellen im Template unterzubringen, an dem die Menüs ausgegeben werden sollen.

<?php show_menu(1); ?>
<?php show_menu(2); ?>   

Schritt 2: WB Einstellungen anpassen

In der Grundeinstellung von WebsiteBaker ist die Verwendung mehrerer Menüs deaktiviert. Die Aktivierung der Option erfolgt im WB-Backend: Optionen -> Erweiterte Optionen anzeigen -> Mehrere Menüs -> Eingeschaltet

Schritt 3: Menüs zuweisen

Beim Anlegen einer neuen Seite wird der Seite automatisch dem ersten definierten Menü zugewiesen. Um den Inhalt einer Seite einem anderen Menü zuzuweisen, gehe wie folgt vor.
WB-Backend: Seiten -> Seitenoptionen Page Settings 

Es erscheint nachfolgender Dialog.

Menü zuweisen

Abbildung 1: Einer Seite ein Menü zuweisen

Über die Listbox "Menü" aus Abbildung 1 kann eine Seite jedem in der info.php Datei des Templates definiertem Menü zugewiesen werden.

Funktionsparameter von show_menu

Nachfolgend sind die möglichen Argumente der Menüfunktion show_menu() aufgeführt. Diese Menüfunktion ist seit WB 2.6.x die Standart Menüfunktion und ersetzt die alte Funktion page_menu() aus WB 2.5.x.

Die Menüfunktion show_menu kann je nach Verwendungszweck mehrfach in der index.php des Templates aufgerufen werden. Ist der erste Parameter ($menu_number) grösser 1, weisst dies auf die Verwendung von mehreren Menüs hin.

Für die Anzeige eines einzelnen Standartmenüs reicht es <?php show_menu(); ?> im HTML Code der Designvorlage (Template) zu verwenden. Im Normalfall benötigt man nur die ersten vier Argumente.

Syntax (zur Nutzung in der Designvorlage):

<?php show_menu($menu_number, $start_level, $recurse, $collapse, $item_template,
                $item_footer, $menu_header, $menu_footer, $default_class, 
                $current_class,$parent); ?>

Die Argumente erklärt

Position Argument Beschreibung Standartwert
1 $menu_number Wenn Multiple Menüs aktiviert sind, wird dieser Wert zur Auswahl des Menüs verwendet 1
2 $start_level Die angezeigte Tiefe des Menüs. Stanartwert ist '0', welches für die Hauptseiten steht.'1' zeigt alle seiten unter der aktuellen Hauptseite an. 0
3 $recurse Maximum der angezeigten Sub-Seiten, Der Standartwert '-1' zeigt alle an. -1
4 $collapse Gibt an, ob das Menü aus/einklappbar (Wert 'true') oder komplett angezeigt werden soll (alle Subseiten sichtbar) wenn der Wert auf 'false' gesetzt wird. true
5 $item_template HTML Code, der vor den Subseiten im Menü angezeigt wird. '<li><span[class]>[a][menu_title] [/a]</span>'
6 $item_footer HTML Code, der nach den Subseiten im Menü angezeigt wird. '</li>'
7 $menu_header HTML welches vor dem Menü und jedem Menüast angezeigt wird. '<ul>'
8 $menu_footer HTML welches nach dem Menü und jedem Menüast angezeigt wird. '</ul>'
9 $default_class Die CSS Klasse die jedem Menüpunkt außer der aktuell angezeigten Seite, zugewiesen wird ' class="menu_default"'
10 $current_class Die CSS Klasse dieder aktuell angezeigten Seite, zugewiesen wird. ' class="menu_current"'
11 $parent (wird intern verwendet) Die Elternseite des Menüasts, Standartwert '0' (Hauptseiten). 0

Beispiele

show_menu(1,0,-1,false); - Zeigt den kompletten Menübaum
show_menu(1,1,1); - zeigt nur die erste Ebene der Unterseiten an (Menüast)
show_menu(1,1,-1); - zeigt einen ausklappbaren Ast unter der aktuellen Seite an 

Hinweis:
Leider erzeugt die WB Funktion show_menu() bei verschachtelten Listen (mehrere Ebenen) nicht validen (X)HTML Code. Daher empfehlen wir den Einsatz des externen Code Snippets show_menu2() von der Addons Seite. Neben validen (X)HTML Code ist show_menu2 durch optimierte Datenbankabfragen schneller und bietet zahlreiche Optionen wie z.B. Benutzerdefinierte Formate, um das Menü den eigenen Wünschen anzupassen. Eine ausführliche Anleitung aller Optionen kann der Readme Datei und auf der Demoseite des Herstellers entnommen werden.