Processwire'da Menü Ağacı Oluşturmak


Kademesi belirlenebilir menü ağacı oluşturmak.

Aşağıdaki kodu alt menü oluşturmak istediğiniz template yerleştirin. Burada (children, 2) aşağıya inme derecesini ifade eder. Örneğin bu değeri değiştirebilirsiniz.

$tree= renderNavTree($page->children, 2);
echo $tree;

function renderNavTree($items, $maxDepth = 0, $fieldNames = '', $class = 'nav') 
{
if($items instanceof Page) $items = array($items);
$out = '';
foreach($items as $item) {
$out .= $item->id == wire('page')->id ? "<li class='current'>" : "<li>";
$out .= "<a href='$item->url'>$item->title</a> ";
if($fieldNames) foreach(explode(' ', $fieldNames) as $fieldName) {
$value = $item->get($fieldName);
if($value) $out .= " <div class='$fieldName'>$value)</div>";
}
if($item->hasChildren() && $maxDepth) {
if($class == 'nav') $class = 'nav nav-tree';
$out .= renderNavTree($item->children(), $maxDepth-1, $fieldNames, $class);
}
$out .= "</li>";
}
if($out) $out = "<ul class='$class'>$out</ul>\n";
return $out;
}