Benutzer-Werkzeuge

Webseiten-Werkzeuge


cookbook:menus

Menüs

BlackCat CMS beinhaltet nach wie vor das Modul show_menu2, welches genauso funktioniert, wie unter Website Baker. Für Dwoo Templates existiert ein entsprechendes Plugin:

  {show_menu( ...SM2 options... )}

Die Reihenfolge und Syntax der Optionen ist exakt dieselbe wie gewohnt.

Die folgenden Angaben gelten für CMS Version 1.1. Für Version 1.2 bitte ans Seitenende scrollen.

Zusätzlich haben wir einen „Menü-Helper“ kreiert, der einige der üblichsten Menü-Varianten direkt unterstützt. Auch hierfür existieren Dwoo-Plugins und mit diesen die entsprechenden Template-Platzhalter:

  cat_breadcrumb  ( __Int__ <PAGE_ID>[, __Int__ <DEPTH>[, __Bool__ <CURRENT>[, __Array__ <OPTIONS> ] ] ] )
  cat_submenu     ( __Int__ <PAGE_ID>[, __Int__ <DEPTH>[, __Bool__ <CURRENT>[, __Array__ <OPTIONS> ] ] ] )
  cat_siblingsmenu( __Int__ <PAGE_ID>[, __Int__ <DEPTH>[, __Bool__ <CURRENT>[, __Array__ <OPTIONS> ] ] ] )

Erst ab BlackCat CMS Version 1.1 final:

  cat_fullmenu    ( [ __Array__ <OPTIONS> ] )

(Der besseren Lesbarkeit halber wurden die Klammern passend eingerückt.)

Optionen

Die Optionen sind immer dieselben, alle Optionen sind - ähm - optional. Diese sind:

PAGE_ID

Die ID der Seite, mit der die Menüerzeugung startet. Standardmäßig wird mit der ID der aktuellen Seite begonnen.

DEPTH

Erlaubt es, die maximale Tiefe des Menüs einzuschränken. Der Effekt hängt vom jeweiligen Menütyp ab. Standardwert ist '999', was 'unbegrenzt' entspricht. (Mehr Menüebenen als 4 oder 5 sind ohnehin nicht zu empfehlen.)

CURRENT

Bestimmt, ob die aktuelle Seite selbst auch im Menü auftaucht oder nicht. Die Standardeinstellung hierfür hängt vom Menütyp ab.

OPTIONS

Weitere Optionen, etwa bezüglich der zu verwendenden CSS-Klassen.

Beispiele

Ausgangspunkt: Seitenhierarchie

Dies ist ein beispielhafter Seitenbaum, anhand dessen das Ergebnis der verschiedenen Aufrufe verdeutlicht werden soll.

+ Page1
+ Page2
  + Page2Child1
    + Page2Child1Child1
    + Page2Child1Child2
      + Page2Child1Child2Child1
+ Page3

Die aktuelle Seite - also die, die gerade angezeigt wird - ist in allen Fällen Page2Child1Child2Child1

cat_submenu

Template Markup:

  {cat_submenu(x)}

Sichtbare Seiten:

+ Page2
  + Page2Child1
    + Page2Child1Child1
    + Page2Child1Child2
      + Page2Child1Child2Child1

'x' entspricht im diesem Beispiel der ID der Seite Page2. Aus diesem Grund werden die beiden anderen Seiten auf dem obersten Level - Page1 und Page3 - nicht im Menü aufgeführt.

Durch die Angabe von 0 als Seiten-ID wird das Menü ausgehend von der Wurzel erzeugt. (Entspricht SM2_ROOT.) In diesem Fall würden alle vorhandenen Seiten angezeigt, also auch Page1 und Page3.

cat_siblingsmenu

Template Markup:

  {cat_siblingsmenu()}

Sichtbare Seiten:

keine

(Es gibt keine weiteren Seiten auf der gleichen Ebene wie Page2Child1Child2Child.)

Würde man beispielsweise nur die Seiten der obersten Ebene sehen wollen, wäre die Angabe:

  {cat_siblingsmenu(NULL)}

Durch den Wert NULL als Seiten-ID (es geht auch '0') wird die Wurzel als Ausgangspunkt verwendet. Alternativ könnte man auch die ID einer der drei Seiten Page1, Page2 oder Page3 angeben.

Ergebnis:

+ Page1
+ Page2
+ Page3

cat_breadcrumb

Template Markup:

  {cat_breadcrumb()}

Sichtbare Seiten:

+ Page2
  + Page2Child1
    + Page2Child1Child2
      + Page2Child1Child2Child1

Angezeigt wird der „Pfad“ von der obersten Ebene bis zur aktuellen Seite. Standardmäßig wird die aktuelle Seite selbst ebenfalls angezeigt, was bei einem Breadcrumb auch sinnvoll ist. Dies läßt sich durch Angabe der Option CURRENT unterbinden:

  {cat_breadcrumb(NULL,999,false)}

Da hierbei eigentlich nur der dritte Parameter angegeben werden soll, man die anderen aber nicht einfach weglassen kann, wird der erste - PAGE_ID - auf NULL gesetzt - das entspricht wiederum der Angabe SM2_ROOT bei ShowMenu2, also der obersten Seite. Der zweite - DEPTH - könnte auch auf einen niedrigeren Wert gesetzt werden, die Angabe 999 entspricht der Standardeinstellung.

Ergebnis:

+ Page2
  + Page2Child1
    + Page2Child1Child2

Der letzte Parameter (OPTIONS)

Mit Hilfe des letzten Parameters lassen sich einige Einstellungen bezüglich der CSS-Klassen vornehmen. Die gewünschten Optionen werden einfach kommasepariert angegeben. Hier ein Beispiel:

  {cat_siblingsmenu(1, NULL, false, current: current_page_item, first: first_item)}

Derzeit werden folgende Einstellungen angeboten:

  • list-class
    Die CSS-Klasse für die Liste als solche, also <ul>
  • first
    Die CSS-Klasse für das jeweils erste Element der Liste, also das erste <li>
  • last
    Die CSS-Klasse für das jeweils letzte Element der Liste, also das letzte <li> vor dem </ul>
  • child
    Die CSS-Klasse für Elemente, die Unterelemente haben, also das <li>, welches ein <ul> und damit eine untergeordnete Liste beinhaltet
  • current
    Die CSS-Klasse für die aktuelle Seite

Ab BlackCat CMS Version 1.1 final:

  • closed
    CSS-Klasse für ein Element, das Unterelemente hat, die jedoch verborgen sind
  • open
    CSS-Klasse für ein offenes (aufgeklapptes) Element
  • prefix
    Ein einheitliches Präfix für die CSS-Klassen; Standard: leer
  • ul-class
    CSS-Klasse für <ul>
  • ul-id
    Eine ID für die Liste, also das allererste <ul>; Alias: list-id

Um mehrere CSS-Klassen anzugeben, werden diese in Anführungszeichen gesetzt:

  {cat_siblingsmenu(1, NULL, false, list-class: "top right nav-list")}

Wichtig ist auch das Leerzeichen nach dem Doppelpunkt!

ab CMS Version 1.2

Änderungen

Ab CMS Version 1.2 entfallen die Parameter <DEPTH> und <CURRENT> bzw. werden in die allgemeinen Optionen verschoben. Der Aufruf für alle Menüs ist jetzt

  cat_xxxmenu(<MenuID>[, <Optionen>])

…wobei xxx z.B. für „full“ steht.

Der Parameter <DEPTH> wird ersetzt durch maxlevel. Der Parameter <CURRENT> wird ersatzlos gestrichen.

Startlevel angeben

Der Startlevel bestimmt den Einstiegspunkt eines Menüs. Der Standard-Startlevel ist 0, das heißt es werden alle Seiten berücksichtigt.

Manchmal ist es notwendig, einen anderen Startlevel anzugeben, etwa wenn sich auf Level 0 die Einstiegsseiten für die verschiedenen Sprachen befinden. In diesem Fall kann man mit Hilfe des Parameters startlevel einen abweichenden Einstiegslevel angeben.

Beispiel:

  {cat_siblingsmenu(1, NULL, false, list-class: "top right nav-list", startlevel: 1)}
cookbook/menus.txt · Zuletzt geändert: 2016/03/14 00:00 (Externe Bearbeitung)