Project

General

Profile

Actions

Dynamische Menüs

TODO: allow-nesting hinzufügen

Um aktuell ein dynamisches Menü in einem Layout zu erzeugen, ist folgender Code notwendig.

$this->getMenu(2,'<div class="panel-heading"><i class="fa fa-navicon"></i> %s</div> %c', [
    'menus' => [
        'ul-class-root' => 'list-group ilch_menu_ul',
        'ul-class-child' => '',
        'li-class-root' => 'list-group-item',
        'li-class-child' => '',
    ],
    'boxes' => [
        'render' => true,
    ],
]);

Mit dem ersten Parameter, hier die 2, wird festgelegt, um welches Menü es sich handelt.

Der zweite Parameter enthält das HTML-Template, das für die Ausgabe der einzelnen Menüs und Boxen genutzt werden soll.
Zu beachten sind hier vor allem %s und %c.

%s wird dynamisch mit dem jeweiligen Menü- oder Boxennamen gefüllt, während %c mit dem entsprechenden Content der Box oder des Menüs gefüllt wird.

Mit dem letzten Parameter, kann man nun noch bestimmte Klassen vom generierten Menü überschreiben oder die Ausgabe beeinflussen.
Alle aktuell möglichen Angaben sind nachfolgend aufgelistet, weitere sind in Zukunft möglich.

[
    'menus' => [
        // Überschreibt die Klasse aller <ul>'s in Ebene 1
        'ul-class-root' => 'list-group ilch_menu_ul',

        // Überschreibt die Klasse aller <ul>'s ab Ebene 2
        'ul-class-child' => '',

        // Überschreibt die Klasse aller <li>'s in Ebene 1
        'li-class-root' => 'list-group-item',

        // Überschreibt die Klasse aller <li>'s ab Ebene 2
        'li-class-child' => '',
    ],
    'boxes' => [
        // Auf false setzen, um in diesem Menü keine(!) Boxen anzuzeigen. Es werden dann nur Menüs ausgegeben!
        'render' => true,
    ],
]

Das <ul>, in dem Artikel und Kalender liegen, hat dadurch jetzt die Klassen list-group und ilch_menu_ul. Die <li>s der beiden Verlinkungen die Klasse list-group-item.
Alle anderen <ul>s und <li>s haben keine weitere Klasse, da diese oben als leer überschrieben wurden.

Die vorerst letzte Einstellungsmöglichkeit ist boxes.render. Diese hat hauptsächlich den Sinn, die Ausgabe von Boxen zu unterdrücken, wenn eine Box in dem Menü an dieser Stelle des Layouts nicht sinnvoll eingebunden werden kann. Ist render nun auf false gesetzt, passiert das folgende:


Wie man sieht, wird die Box 'Archive' nicht im Layout ausgegeben.

allow-nesting


Updated by Schwarz, Tobias almost 3 years ago · 2 revisions