2016-10-23 3 views
0

Ich habe dieses Stück Code ausprobiert, der in vielen Beispielen von Drupal-Entwicklern in meiner template.php verwendet wird, aber wenn ich das $ Variablen-Array ausdrucke, enthält es keinen Schlüssel namens 'tree'. Ich brauche nur ul li-Tags zu meinem Menüblock hinzufügen, aberWie theme_menu_tree in Drupal 7 anpassen?

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

Dies ist, wie ich das Menü auf page.tpl verdient gemacht habe mit dem folgenden Code, der in Drupal Menüs eine Liste von Links unter Hauptmenü hat

<nav id="menu"> 
    <h2>Menu</h2> 
    <?php print render($page['menu_bar']); ?> 
    </nav> 

Ich brauche nur ein Menü in ul li Tags.

Antwort

1

Ja, ich bin auch mit dem Menü Drupal Renderer fedup, das ist, warum ich lieber mein eigenes schreiben machen (in 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> 
0

Ein einfacher Weg, die ich über

kam
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 
}