Drupal:如何在主菜单树</ul>中向子<ul>添加自定义类

时间:2013-07-02 12:24:20

标签: menu drupal-7

我在https://drupal.org/node/1178784搜索并找到了一个确切的问题,但那里的答案无效。

我正在使用Drupal 7来构建一个网站。在里面,我有一个主菜单,可能/可能没有另一个菜单。我希望父主菜单具有与子菜单不同的类。

基本上,这是我现在的HTML:

<ul class='menu'>
 <li>
  <a>first</a>
  <ul class='menu'>
   <li>
    <a>sub-item</a>
   </li>
  </ul>
 </li>
</ul>

我希望这样做:

<ul class='menu'>
 <li>
  <a>first</a>
  <ul class='sub'>
   <li>
    <a>sub-item</a>
   </li>
  </ul>
 </li>
</ul>

在drupal中有一个函数theme_menu_tree来更改<ul>内的类,但该函数将更改所有<ul>(根父<ul>和所有子<ul> )。 还有一个函数theme_menu_link可以将类添加到<li>元素,但在我的情况下这不是一个选项。

如果你想知道为什么我需要更改子<ul>类,那是因为我想实现这个:http://tympanus.net/codrops/2013/04/19/responsive-multi-level-menu/。响应式多级菜单要求子级<ul>具有与其根级父级不同的类。

我到处寻找,但仍未找到任何解决方案。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

你必须做这样的事情。 我希望这会有所帮助,不要忘记改变路径:

 function mbportal_menu_tree($variables) {

      if (preg_match("/\bchildren\b/i", $variables['tree'])){
       return '<ul class="menu nav nav-pills nav-stacked nav-bracket">' . $variables['tree']    . '</ul>';
      } else {
        return '<ul class="children">' . $variables['tree'] . '</ul>';
      }
  }