Этот сниппет выведет список вложенных пунктов для активного верхнего пункта меню. Возможно вы захотите использовать этот код вместе с основными ссылками. Настройка видимости блока сделает его видимым только для подходящих меню.
<?php
$menu_trail= _menu_get_active_trail();
$menu_top_level = array_shift( $menu_trail);
// comment next line when finished testing using: // in front
print( 'top-level-id= ' . $menu_top_level .'<br/>');
$menu_sub_menu = array_shift( $menu_trail);
print( menu_tree( $menu_sub_menu));
?>
<?php
// Fill in the appropriate top level ID's in a comma-separated list
$valid_top_levels = array(1, 2);
// Uncomment next line when finished testing
//return in_array( array_shift( _menu_get_active_trail()), $valid_top_levels);
return TRUE;
?>
<?php
$menus = menu_tree_page_data('primary-links');
print menu_tree_output(menu_tree_below($menus));
function menu_tree_below($tree) {
foreach ($tree as $menu) {
if(!empty($menu['link']['in_active_trail']) && $menu['below']) {
$r = menu_tree_below($menu['below']);
if ($r==0) { return $menu['below']; }
else { return $r; }
}
}
return 0;
}
?>
<?php
$menus = menu_tree('main-menu');
print drupal_render(menu_tree_below($menus));
function menu_tree_below($tree) {
foreach ($tree as $menu) {
if(!empty($menu['#original_link']['in_active_trail']) && $menu['#below']) {
$r = menu_tree_below($menu['#below']);
if ($r==0) { return $menu['#below']; }
else { return $r; }
}
}
return 0;
}
?>
Комментарии
У мне не работает этот код для Drupal6 , ошибка _menu_get_active_trail().
Посмотри на странице-источнике, там для 6 версии вроде есть код.
То же самое можно сделать, просто задав опции в настройках модуля Menu (Источник для Secondary Links - Primary Links). Затем показываем где надо блок Secondary Links и всё. Все меню строится в Primary Links.
Для 6го Друпала
(работает только для 'primary-links', либо вместо этого поставить свой id меню)