0) {
// Ich würde gerne den Namen des Elternlinks als Überschrift des Menüblocks nehmen
// Das geht natürlich nur, wenn die Tiefe MIND. 1 ist
if ($level >= 1) {
$menuParent = nw_menu_navigation_links($tree, $menu_name, $level-1);
foreach ($menuParent as $key => $value) {
if (stripos($key, 'active-trail') !== false) {
$menuOutput['activeParent'] = $menuParent[$key]['title'];
}
}
unset($key); unset ($value);
} else {
$menuOutput['activeParent'] = 'nw_menu_navigation_links(), template.php : $level zu klein.';
}
$menuOutput['links'] .= '
'; // html vor dem Menü
foreach ($menu as $key => $value) {
// Prüfen, ob die Referenz ein Drupal- oder ein externer Link ist
if (stripos($menu[$key]['href'], "://") === false ) {
$myLink['href'] = '/?q=' . $menu[$key]['href']; // ein Drupal-Link
} else {
$myLink['href'] = $menu[$key]['href']; // ein externer Link
}
$myLink['linkTitel'] = htmlspecialchars($menu[$key]['attributes']['title']); // Title-Attribut des Links
$myLink['linkText'] = $menu[$key]['title'];
// Current
$myLink['currentID'] = ''; // initialisieren
if (stripos($key, 'active-trail') === false) {
$myLink['currentID'] = ''; // Kann benutzt werden, um eine ID zu verwenden, die in allen anderen ausser dem aktiven link genutzt wird ;-)
// Submenü-Routine vollziehen?
$checkNextSubMenu = false;
} else {
$myLink['currentID'] = 'current'; // die ID "current" bewirkt bei mir die Auszeichnung
// Submenü-Routine vollziehen?
$checkNextSubMenu = true;
}
// Das eigentliche "Basteln" des Links. Dieser Abschnitt ist wichtig für Euch,als Designer
$myLink['Style'] = '';
// Ein Menüpunkt sieht bei mir in etwa wie folgt aus: - LINKTEXT
$menuOutput['links'] .= '- ' . $myLink['linkText'] . '
';
//Nächstes Submenü abarbeiten
if ($checkNextSubMenu) {
$menuSub1 = nw_menu_navigation_links($tree, $menu_name, $level+1);
// Prüfen, ob Links enthalten sind
if (count($menuSub1) > 0) {
foreach ($menuSub1 as $keySub1 => $valueSub1) {
// Prüfen, ob die Referenz ein Drupal oder ein externer Link ist
if (stripos($menuSub1[$keySub1]['href'], "://") === false ) {
$myLink['href'] = '/?q=' . $menuSub1[$keySub1]['href']; // ein Drupal-Link
} else {
$myLink['href'] = $menuSub1[$keySub1]['href']; // ein externer Link
}
$myLink['linkTitel'] = htmlspecialchars($menuSub1[$keySub1]['attributes']['title']); // Title-Attribut des Links
$myLink['linkText'] = $menuSub1[$keySub1]['title'];
// CSS
$myLink['currentID'] = ''; // initialisieren
if (stripos($keySub1, 'active-trail') === false) {
$myLink['currentID'] = ''; // Kann benutzt werden, um eine ID zu verwenden, die in allen anderen ausser dem aktiven link genutzt wird ;-)
$checkNextSubMenu2 = false;
} else {
$myLink['currentID'] = 'current';
$checkNextSubMenu2 = true;
}
$menuOutput['links'] .= '';
//Nächstes Submenü abarbeiten
if ($checkNextSubMenu2) {
$menuSub2 = nw_menu_navigation_links($tree, $menu_name, $level+2);
// Prüfen, ob Links enthalten sind
if (count($menuSub2) > 0) {
foreach ($menuSub2 as $keySub2 => $valueSub2) {
// Prüfen, ob die Referenz ein Drupal oder ein externer Link ist
if (stripos($menuSub2[$keySub2]['href'], "://") === false ) {
$myLink['href'] = '/?q=' . $menuSub2[$keySub2]['href']; // ein Drupal-Link
} else {
$myLink['href'] = $menuSub1[$keySub2]['href']; // ein externer Link
}
$myLink['linkTitel'] = htmlspecialchars($menuSub2[$keySub2]['attributes']['title']); // Title-Attribut des Links
$myLink['linkText'] = $menuSub2[$keySub2]['title'];
// CSS
$myLink['currentID'] = ''; // initialisieren
if (stripos($keySub2, 'active-trail') === false) {
$myLink['currentID'] = ''; // Kann benutzt werden, um eine ID zu verwenden, die in allen anderen ausser dem aktiven link genutzt wird ;-)
$checkNextSubMenu3= false;
} else {
$myLink['currentID'] = 'current';
$checkNextSubMenu3= true;
}
$menuOutput['links'] .= '';
// hier würde kommen: Nächstes Submenü abarbeiten
// .....
} // /foreach ($menuSub2 as $keySub2 => $valueSub2)
} // /if (count($menuSub2) > 0)
} // /if ($checkNextSubMenu)
} // /foreach ($menuSub1 as $keySub1 => $valueSub1)
} // /if (count($menuSub1) > 0)
} // /if ($checkNextSubMenu)
} // /foreach ($menu as $key => $value)
$menuOutput['links'] .= '';// html nach dem Menü
return $menuOutput;
} // /if (count($menu) > 0)
return false;
}
}
/* Ursprünglich von der Drupal-API */
function nw_menu_navigation_links($tree, $menu_name, $level = 0) {
// Don't even bother querying the menu table if no menu is specified.
if (empty($menu_name)) {
return array();
}
// $tree = menu_tree_page_data($menu_name); rufen wir aus performance-Gründen in nwShowMenu() auf
// Go down the active trail until the right level is reached.
while ($level-- > 0 && $tree) {
// Loop through the current level's items until we find one that is in trail.
while ($item = array_shift($tree)) {
if ($item['link']['in_active_trail']) {
// If the item is in the active trail, we continue in the subtree.
$tree = empty($item['below']) ? array() : $item['below'];
break;
}
}
}
// Create a single level of links.
$links = array();
foreach ($tree as $item) {
if (!$item['link']['hidden']) {
$class = '';
$l = $item['link']['localized_options'];
$l['href'] = $item['link']['href'];
$l['title'] = $item['link']['title'];
if ($item['link']['in_active_trail']) {
$class = ' active-trail';
}
// Keyed with the unique mlid to generate classes in theme_links().
$links['menu-'. $item['link']['mlid'] . $class] = $l;
}
}
return $links;
}
?>