ProcessWire - One Level Navigation

Aus Wikizone
Version vom 30. Oktober 2017, 11:00 Uhr von Steff (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Hinweis: Wir verwenden ein Optionsfeld im Backend 'menus' um dort Seiten auswählen zu können, die ins Menü sollen.

topnav.inc

<?php namespace ProcessWire;

$pa = $homepage->and($homepage->children("menus.id=1"));//only if main menu is checked

echo "
<nav class='navbar'>
  ".renderOneLevelNav($pa)."
</nav>";

_func.php

/**
 * Given a group of pages, render a one level navbar
 *
 * @param array|PageArray $items
 * @return string
 *
 */
function renderOneLevelNav($pa){
  if($pa instanceof Page) $pa = array($pa);
  $out = "<ul class='nav navbar-nav'>";
  foreach($pa as $item) {
    if($item->id == $page->rootParent->id) {
      $out .= "<li class='current'>";
    } else {
      $out .= "<li>";
    }
    $out .= "<a href='$item->url'>$item->title</a></li>";
  }
    $out .= "</ul>";
    return $out;
}