2014-01-07 40 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