ProcessWire - One Level Navigation

Aus Wikizone
Version vom 30. Oktober 2017, 10:55 Uhr von Steff (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „topnav.inc <syntaxhighlight lang="php"> <?php namespace ProcessWire; $pa = $homepage->and($homepage->children("menus.id=1"));//only if main menu is checked ech…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

topnav.inc

<?php namespace ProcessWire;
$pa = $homepage->and($homepage->children("menus.id=1"));//only if main menu is checked
echo "
<nav class='navbar'>
  ".renderNav($pa)."
</nav>";

_func.php

/**
 * Given a group of pages, render a one level navbar
 *
 * @param array|PageArray $items
 * @return string
 *
 */
function renderNav($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;
}