/** * recursive iterate and create map thought multidimensional menu array * * @param array $array; Pass multidimensional array for menu; name and/or url * @return array of processed elements via wrapElement() * */ function drawMenu($array, $level = 0) { $menu = ""; foreach ($array as $key => $value) { $addClass = ''; // check the level to decide the main items for class 'ismain' if ($level == 0) { $addClass = ' ismain'; } !empty($value['url']) ? $url = $value['url'] : ($url = NULL); // inside the loop items that has no subs if (!isset($value['subpages'])) { $class = 'inside'; $menu .= wrapElement(array('element' => 'li', 'class' => $class . $addClass, 'content' => $value['name'], 'url' => $url)); } else { // outside the loop items that do has subs $class = 'outside'; $menu .= wrapElement(array('element' => 'li', 'class' => $class . $addClass, 'content' => $value['name'], 'url' => $value['url'], 'openTag' => TRUE)); $menuItemContent = drawMenu($value['subpages'], $level + 1); $menu .= wrapElement(array('element' => 'ul', 'content' => $menuItemContent)); $menu .= wrapElement('li'); } } return $menu; }
<?php require_once 'function.php'; require_once 'resource.php'; // @@ wrap the menu element with Ul and class 'nagivate' if (!empty($aMenu)) { print $aMenu = wrapElement(array('element' => 'ul', 'class' => 'navigate', 'content' => drawMenu($aMenu))); }