如何自定义drupal 7中的theme_menu_tree


How to customise theme_menu_tree in drupal 7 ?

我已经尝试了这段代码,在drupal开发人员的很多例子中使用,在我的template.php中,但是当我打印出$variables数组时,它不包含任何名为'tree'的键。我只需要添加ul - li标签到我的菜单块但是

function atsubtheme_menu_tree(&$variables) {
return '<ul class="nav">' . $variables['tree'] . '</ul>';
}

这就是我在页面上呈现菜单的方式。TPL使用以下代码,它在drupal菜单

的主菜单下有一个链接列表
  <nav id="menu">
     <h2>Menu</h2>
     <?php print render($page['menu_bar']); ?>
  </nav> 

我只需要在ulli标签中呈现菜单

是的,我也厌倦了菜单drupal渲染器,这就是为什么我更喜欢写我自己的渲染(在page.tpl.php):

<ul class="nav">
<?php
    $mymenu = menu_tree('main-menu'); 
    foreach($mymenu as $item){ 
        if(!empty($item['#title'])){
            $attributes = array('class'=>array('all', 'my', 'classes'), 'id'=>'an-eventual-id');
            print '<li>'.l($item['#title'],$item['#href'],array('attributes'=>$attributes)).'</li>';
        }
    }
?>
</ul>

我遇到的一个更简单的方法

function YOURTHEMENAME_menu_tree($variables) {
return '<ul class="mycustmenu">' . $variables['tree'] . '</ul>';
//wrapping the menu in ul tags  
} 
function YOURTHEMENAME_menu_link($variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
//if your menu has a sub menu
}
$output = l($element['#title'], $element['#href'],$element['#localized_options']);             
return '<li>' . $output . $sub_menu . "</li>'n";
//wrapping each list item in li tags
}