简体   繁体   English

Drupal 7引导程序下拉菜单

[英]Drupal 7 bootstrap dropdown menu

I'm a newbie of Drupal. 我是Drupal的新手。 I'm trying to develop a bootstrap 3 template, but I have a problem with the navbar dropdown menu implementation. 我正在尝试开发bootstrap 3模板,但是导航栏下拉菜单的实现存在问题。 I followed these steps: 我按照以下步骤操作:

in my mytheme/templates folder I create a page.tpl.php file with the following code: 在mytheme / templates文件夹中,使用以下代码创建一个page.tpl.php文件:

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

in mytheme folder I create a template.php file with these functions: 在mytheme文件夹中,我创建具有以下功能的te​​mplate.php文件:

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";
}

with this code I'm at a good point, but I need to remove classes "nav navbar-nav" from children and add the class "dropdown-menu". 有了这段代码,我很擅长,但是我需要从子级中删除类“ nav navbar-nav”,并添加类“ dropdown-menu”。 This is the result of my code: 这是我的代码的结果:

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

and this is what I would like to obtain: 这就是我想要获得的:

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

Maybe I can do something like this: 也许我可以做这样的事情:

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>';
   }

}

but I don't know how... Any idea? 但我不知道怎么知道

I too am a bit of a newbie when it comes to Drupal and was also having this problem. 当谈到Drupal时,我也有点新手,也遇到了这个问题。 I have tweaked your function and it works for me: 我已经调整了您的功能,对我有用:

    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";
     }

I have added a str_replace() into your #below element to replace the "nav navbar-nav" with "dropdown-menu" 我在您的#below元素中添加了str_replace() ,以将“ nav navbar-nav”替换为“ dropdown-menu”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM