Zum Hauptinhalt springen
Ein frei positioniertes Produktmenü bauen Sie aus Bereichen und Schleifen selbst auf. Diese Seite zeigt zwei vollständige Beispiele dafür, die über eine einfache Liste hinausgehen: ein Menü mit Flyout, in dem die Unterkategorien als Raster erscheinen und Platz für Bilder bleibt. Wie Produktmenüs grundsätzlich aufgebaut sind, welche Ebenen-Tags es gibt und was die Status-Klassen bedeuten, steht auf der Anleitungsseite. Diese Seite setzt das voraus. Wegweiser: Frei positioniertes Produktmenü · Referenz: PM- (Produktmenü)

Was beide Beispiele voraussetzen

Beide Menüs blenden ihr Flyout mit jQuery ein und aus. jQuery kommt im Vorlagenshop aus der WEBSALE JavaScript-Bibliothek ab Version 1.8.1, die im head-Bereich jedes Templates stehen muss, das eines dieser Menüs enthält. Der fünfte Parameter von WS-LoadProductMenu() steht in beiden Beispielen auf no. Die eingebaute MouseOver-Funktion des Shopsystems wird hier also nicht verwendet, das Ein- und Ausblenden erledigen die Beispiele selbst. Die Bibliothek brauchen Sie trotzdem, aber nur wegen jQuery. Wenn Ihr Shop jQuery bereits auf anderem Weg einbindet, brauchen Sie die Bibliothek nicht. Für neue Shops ist ohnehin der Weg über die WS-Module vorgesehen. Materialien: WEBSALE JavaScript-Bibliothek · Referenz: WS-LoadProductMenu()

Beispiel 1: Waagerechtes Hauptmenü mit senkrechtem Flyout

Das Hauptmenü steht waagerecht am Seitenkopf. Fährt der Besucher über einen Hauptnavigationspunkt, klappt darunter ein Kasten auf, in dem die Unterkategorien der zweiten und dritten Ebene stehen. Diese Unterkategorien verteilt das Template rechnerisch auf drei gleich hohe Spalten, sodass der Kasten wie ein Raster wirkt. Rechts daneben ist Platz für eine weitere Spalte mit verlinkten Bildern. Pm Ep Beispiel1

Wie die Spaltenverteilung rechnet

Der Kern des Beispiels sind vier Zeilen vor der Schleife über die zweite Ebene. Sie bestimmen, nach wie vielen Einträgen eine neue Spalte beginnt. In der Schleife zählt DC-Int2 dann die Einträge mit. Sobald der Zähler den berechneten Wert überschreitet, schließt das Template den Spalten-Container und öffnet den nächsten. Die Spaltenzahl steht an drei Stellen im Quellcode: zweimal als Argument von _div und _mod, einmal im Stylesheet über die Breite von pm-data-level2. Wollen Sie statt drei Spalten vier, ändern Sie alle drei Stellen.
Weil erst aufgerundet und dann gezählt wird, füllt das Verfahren die vorderen Spalten voll und lässt die letzte gegebenenfalls kürzer. Bei vier Unterkategorien und drei Spalten entstehen deshalb zwei Spalten mit zwei Einträgen und keine dritte. Das ist gewollt, sieht bei sehr wenigen Unterkategorien aber unausgewogen aus.

Der Quellcode für das Template

Das Stylesheet

Das Stylesheet ist auf genau fünf Hauptnavigationspunkte zugeschnitten. Jeder hat seine eigene Farbe und einen von Hand ausgemessenen left-Wert, der sein Flyout linksbündig zur Seite schiebt. Hat Ihr Katalog eine sechste Hauptkategorie, bleibt deren Flyout ohne Hintergrund und an der falschen Stelle stehen.Ergänzen Sie für jede weitere Hauptkategorie einen Block pm-data_level1_6 samt #pm-data_topnav_flyout_6. Die left-Werte hängen von der Textbreite Ihrer Kategorienamen ab und müssen neu ausgemessen werden.
Der Wert 798px in der Flyout-Breite ist die Inhaltsbreite des Beispielshops. Passen Sie ihn an Ihr Layout an, sonst steht der Kasten über oder unter der Seitenbreite.

Beispiel 2: Senkrechtes Hauptmenü mit waagerechtem Flyout

Das Hauptmenü steht senkrecht in der Seitenleiste. Fährt der Besucher über einen Hauptnavigationspunkt, erscheint rechts daneben ein breiter Kasten mit den Unterkategorien der zweiten Ebene und zusätzlich mit Produktbildern aus dieser Hauptkategorie. Klickt der Besucher dann auf eine Unterkategorie, bleibt sie zusätzlich im senkrechten Menü aufgeklappt, mitsamt der dritten Ebene. Dafür sorgen die freien Parameter DC-FP2 und DC-FP3. Pm Ep Beispiel2n3

Wie das Aufklappen funktioniert

Das Flyout und das aufgeklappte Untermenü sind zwei verschiedene Dinge, die beide aus derselben Schleife kommen. Der Trick dabei: Das Template durchläuft die zweite Ebene einmal probeweise und setzt DC-FP2 auf show, sobald einer der Unterpunkte den Zustand geöffnet oder ausgewählt hat. Erst danach entscheidet {DC-FP2(show)}, ob der Block überhaupt ausgegeben wird. Für die dritte Ebene wiederholt sich das mit DC-FP3.

Der Quellcode für das Template

Cat-AdvData() öffnet eine Produktliste zu einem Kategorieindex und ist nicht dasselbe wie die CAT-Tags, die die gerade aktive Kategorie auslesen. Letztere sind innerhalb des Produktmenüs nicht zulässig, Cat-AdvData() dagegen bekommt den Index ausdrücklich als Parameter und wertet ihn als Tag im Tag aus. Deshalb funktioniert $DC-FP1$ an dieser Stelle. Die Zahl im zweiten Parameter von Cat-AdvData() ist die Höchstzahl der ausgegebenen Produkte. Ohne Stern erhalten Sie die ersten Produkte in Listenreihenfolge, mit Stern eine zufällige Auswahl. {Cat-AdvData($DC-FP1$,*3)} zeigt also drei wechselnde Produkte statt immer derselben drei.

Das Stylesheet

Die Namen passen nicht zusammen, das Flyout bleibt deshalb ohne Position, ohne Breite und ohne Hintergrund stehen. Hier auf die Namen des Quellcodes vereinheitlicht.
Die Werte 190px für den linken Abstand und 740px für die Breite des Flyouts gehören zusammen mit der Menübreite von 200px. Ändern Sie die Menübreite, ziehen Sie den linken Abstand mit. Das Ein- und Ausblenden über onMouseOver und onMouseOut stammt aus der Entstehungszeit der Beispiele. Für einen neuen Shop erreichen Sie dasselbe ohne JavaScript über .ws_flyout:hover .ws_topnav_flyout { display: block; }. Das Beispiel nutzt diese Technik bereits für die Hervorhebung des Hauptnavigationspunktes, siehe die Regel .level1 .ws_flyout:hover a.level1_link. Referenz: DC-Counter1…3 · DC-FP1…9 · Cat-AdvData()