Markup Simple Navigation (ProcessWire): Unterschied zwischen den Versionen
Steff (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Modul das die Erstellung von Navigationen erleichtert. Gibt eine verschachtelte Liste zurück die sich über diverse Optionen anpassen läßt. MarkupSimpleNav…“) |
Steff (Diskussion | Beiträge) |
||
| Zeile 73: | Zeile 73: | ||
); | ); | ||
selector_field behält auf alle Fälle Priorität. | selector_field behält auf alle Fälle Priorität. | ||
| + | </pre> | ||
| + | == Platzhalter: Feldwerte als Variablen == | ||
| + | * %s definiert wo die Klassen platziert werden (current, parent...) | ||
| + | * Feldplatzhalter können in den item tpl Ausgaben platziert werden. | ||
| + | {anyfield} | ||
| + | {headline|title} | ||
| + | //To output url you just use | ||
| + | {url}. | ||
| + | |||
| + | <pre> | ||
| + | 'list_field_class' => '{template} p{id}' | ||
| + | // will add ' basic-page p1001' to each list_tpl class string. | ||
</pre> | </pre> | ||
== Hooks == | == Hooks == | ||
| − | === Hook um Klassen in li zu setzen == | + | === Hook um Klassen in li zu setzen === |
<syntaxhiglight lang="php"> | <syntaxhiglight lang="php"> | ||
$nav = $modules->get("MarkupSimpleNavigation"); | $nav = $modules->get("MarkupSimpleNavigation"); | ||
Version vom 2. November 2017, 20:16 Uhr
Modul das die Erstellung von Navigationen erleichtert. Gibt eine verschachtelte Liste zurück die sich über diverse Optionen anpassen läßt.
MarkupSimpleNavigation
// DEFAULT liefert einen kompletten Baum
$treeMenu = $modules->get("MarkupSimpleNavigation");
echo $treeMenu->render(); // Ausgabe über render(), kann vorher noch manipuliert werden
// OPTIONS
$options = array(
'parent_class' => 'parent',
'current_class' => 'current',
'has_children_class' => 'has_children',
'levels' => true,
'levels_prefix' => 'level-',
'max_levels' => null,
'firstlast' => false,
'collapsed' => false,
'show_root' => false,
'selector' => '',
'selector_field' => 'nav_selector',
'outer_tpl' => '<ul>||</ul>',
'inner_tpl' => '<ul>||</ul>',
'list_tpl' => '<li%s>||</li>',
'list_field_class' => '',
'item_tpl' => '<a href="{url}">{title}</a>',
'item_current_tpl' => '<a href="{url}">{title}</a>',
'xtemplates' => '',
'xitem_tpl' => '<a href="{url}">{title}</a>',
'xitem_current_tpl' => '<span>{title}</span>',
'date_format' => 'Y/m/d',
'code_formatting' => false,
'debug' => false
);
echo $treeMenu->render($options);
// Weitere Parameter
// $page ist die aktuelle Seite (für current etc.)
// $rootpage ist der Startpunkt des Menüs
render($options, $page, $rootPage)
// anderer Startpunkt
$rootPage = $pages->get("/en/"); // or any other page that has subpages
echo $treeMenu->render(null, null, $rootPage);
// Mehrere Pages als Startpunkt mit Array of Pages (hier im Feld navigation_entries)
$entries = $pages->get("/")->navigation_entries;
echo $treeMenu->render(null, null, $entries);
Feld Platzhalter in Optionen
'inner_tpl' => "
- ||
",
Selectors / Auswahl Filter auf Levelbasis
Man kann für jeden Treelevel festlegen auf welcher Basis die Seiten gefiltert werden Im Code:
$pages->get(1001)->my_selector = "template=projects";
Oder man definiert ein Feld. Wenn dies auf der Seite vorhanden ist wird der Filter dort verwendet.
$options = array( "selector_field" => "my_selector" );
Man kann für jeden Level einen Filter festlegen:
$options = array( "selector_level1" => "template=ressort", "selector_level2" => "start=0, limit=10", "selector_level3" => "template=news|events, sort=-created", "selector_field" => "my_selector" ); selector_field behält auf alle Fälle Priorität.
Platzhalter: Feldwerte als Variablen
- %s definiert wo die Klassen platziert werden (current, parent...)
- Feldplatzhalter können in den item tpl Ausgaben platziert werden.
{anyfield}
{headline|title}
//To output url you just use
{url}.
'list_field_class' => '{template} p{id}'
// will add ' basic-page p1001' to each list_tpl class string.
Hooks
Hook um Klassen in li zu setzen
<syntaxhiglight lang="php"> $nav = $modules->get("MarkupSimpleNavigation");
function hookGetListClass(HookEvent $event){
$child = $event->arguments('page'); // current rendered child page
$class = $event->arguments('class'); // the class string already present
// any check on that child to set your custom class
if($child->id == 1001){
$event->return .= " yourclass"; // add your custom class to the existing
}
}
// setup the hook after on ___getListClass($class, $page) method $nav->addHookAfter('getListClass', null, 'hookGetListClass'); echo $nav->render(); </syntaxhighlight>
Hook um den Link String zu manipulieren
<syntaxhiglight lang="php"> $nav = $modules->get("MarkupSimpleNavigation");
function myItemString(HookEvent $event){
$child = $event->arguments('page'); // current rendered child page
// any logic with $child possible here
if($child->id == 1001){
// set the return value of this hook to a custom string
$event->return .= "<a href='$child->url'>Some Text$child->title</a>";
}
}
// setup the hook after on ___getItemString($class, $page) method $nav->addHookAfter('getItemString', null, 'myItemString'); echo $nav->render(); </syntaxhighlight>