2011-05-13 166 views
3

我非常需要帮助。我试图在Drupal 7中自定义主菜单(仅),以便它适合我的blueprintcss需求。我试图在文档中找到答案,但没有直接的例子,这使得它有点困难。Drupal 7自定义主菜单

基本要求是让其他菜单(导航等)不受主菜单样式的影响。

page.tpl.php中包括此代码:

<?php if ($main_menu): ?> 
<div class="span-9" id="topmenu"> 
<?php print theme('links__system_main_menu', array(
'links' => $main_menu, 
'attributes' => array(
'id' => 'main-menu', 
'class' => array('links', 'inline', 'clearfix'), 
), 
)); ?> 
</div> 
<?php endif; ?> 

输出显示:

<div class="span-9" id="topmenu"> 
<ul id="main-menu" class="links inline clearfix"> 
<li class="menu-151 first"><a href="/drupal/" title="">Home</a></li> 
<li class="menu-152"><a href="/drupal/" title="">Contact Us</a></li> 
<li class="menu-153 last"><a href="/drupal/" title="">About Us</a></li> 
</ul> 
</div> 

而所需的输出应该是这样的:

<div class="span-9" id="topmenu"> 
<div class="span-3 menu-151"><a href="/drupal/" title="">Home</a></div> 
<div class="span-3 menu-152"><a href="/drupal/" title="">Contact Us</a></div> 
<div class="span-3 menu-153 last"><a href="/drupal/" title="">About Us</a></div> 
</div> 

回答

3

您可以覆盖主题功能来修改生成的标记。

要做到这一点:

  1. 找到您所呼叫的主题功能(须 theme_links__system_main_menu)。
  2. 复制此功能的代码粘贴到一个自定义主题功能(可以 在phptemplate或自定义模块来完成)
  3. 自定义您的主题函数使用divs代替ul li

见官方的Drupal文档:Overriding themable output“如何更改HTML Drupal方式”部分