2014-01-07 58 views
0

我是Drupal的新手。我正在尝试开发一个引导程序3模板,但我在导航栏下拉菜单实施中遇到了问题。我按照这些步骤:Drupal 7引导下拉菜单

在我的MyTheme

/模板文件夹中创建包含下面的代码文件page.tpl.php中:我创建具有这些功能的te​​mplate.php文件中MyTheme的文件夹中

if ($page['header']) 
... 
$main_menu = variable_get('menu_main_links_source', 'main-menu'); 
$tree = menu_tree($main_menu); 
print drupal_render($tree); 
... 

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

function mytheme_menu_link(array $variables) { 
    $element = $variables['element']; 
    $sub_menu = ''; 
    $dropdown = ''; 
    if ($element['#below']) { 
    $sub_menu = drupal_render($element['#below']); 
    $dropdown = 'class="dropdown"'; 
    $element['#localized_options']['attributes']['class'][] = 'dropdown-toggle'; 
    } 
    $output = l($element['#title'], $element['#href'], $element['#localized_options']); 
    return '<li ' .$dropdown. ' >' . $output . $sub_menu . "</li>\n"; 
} 

与此代码我在一个好点,但我需要从儿童类中删除“NAV导航栏,导航”,并添加类“下拉菜单”。 这是我的代码的结果:

<ul class="nav navbar-nav"> 
<li><a href="/drupal/node/1" class="active">XYZ</a></li> 
<li><a href="/drupal/node/2" title="">ASD</a></li> 
<li class="dropdown"><a href="/drupal/node/3" title="" class="dropdown-toggle">XXX</a> 
<ul class="nav navbar-nav"> 
<li>...</li> 
<li>...</li> 
<li>...</li> 
</ul> 
</li> 
</ul> 

,这是我想什么来获得:

<ul class="nav navbar-nav"> 
<li><a href="/drupal/node/1" class="active">XYZ</a></li> 
<li><a href="/drupal/node/2" title="">ASD</a></li> 
<li class="dropdown"><a href="/drupal/node/3" title="" class="dropdown-toggle">XXX</a> 
<ul class="dropdown-menu"> <!-- HERE IS THE DIFFERENCE --> 
<li>...</li> 
<li>...</li> 
<li>...</li> 
</ul> 
</li> 
</ul> 

也许我可以做这样的事情:

function mytheme_menu_tree($variables) { 
    if ([check if I'm at the first level]) { 
     return '<ul class="nav navbar-nav">' . $variables['tree'] . '</ul>'; 
    } else { 
     return '<ul class="dropdown-menu">' . $variables['tree'] . '</ul>'; 
    } 

} 

,但我不知道如何......任何想法?

回答

0

我有同样的问题,我找到了解决方案here。如果你知道更好的方法,请让我知道,我正在为此工作。谢谢。

1

对于Drupal,我也是一个新手,也有这个问题。我已经优化了你的功能和它的作品对我来说:

function SeatradeKorea_menu_link(array $variables) { 
     $element = $variables['element']; 
     $sub_menu = ''; 
     $dropdown = ''; 
     if ($element['#below']) { 
      $sub_menu = drupal_render($element['#below']); 
      $sub_menu = str_replace('nav navbar-nav', 'dropdown-menu', $sub_menu); 
      $dropdown = 'class="dropdown"'; 
      $element['#localized_options']['attributes']['class'][] = 'dropdown-toggle'; 
     } 
     $output = l($element['#title'], $element['#href'], $element['#localized_options']); 
     return '<li ' .$dropdown. ' >' . $output . $sub_menu . "</li>\n"; 
    } 

我添加了一个str_replace()到您#below元素与“下拉菜单中选择”

0

有一个漂亮的,以取代“NAV导航栏,导航”彻底解释如何做到这一点here