Drupal 7 开发内部培训资料, 分头诗人

Drupal Zen 基模板菜鸟终结者 2 ---- 增加对Nice Menus 的支持

猪跑啦独家原创专稿,欢迎您转载本文,转载请注明来源。

Nice Menus是一个非常有好的菜单模块。用它可以轻松实现菜单下拉与折叠。

Zen 默认是直接通过blocks调用菜单,而Nice Menus 能够非常轻易的配置成一个block,默认的zen子模板只需要一些小修改,就能很好的应用Nice Menus。
第一步,复制Zen 的templates文件夹到你的zen子模板下方。
第二步,打开page.tpl.php搜索id 为 navigation  的div,找到如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php if ($page['navigation'] || $main_menu): ?>
      <div id="navigation"><div class="section clearfix">
 
        <?php print theme('links__system_main_menu', array(
          'links' => $main_menu,
          'attributes' => array(
            'id' => 'main-menu',
            'class' => array('links', 'inline', 'clearfix'),
          ),
          'heading' => array(
            'text' => t('Main menu'),
            'level' => 'h2',
            'class' => array('element-invisible'),
          ),
        )); ?>

 

我们把它替换成:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php if ($page['navigation'] || $main_menu): ?>
      <div id="navigation"><div class="section clearfix">
 
        <?php
        if (module_exists('nice_menus')) {
          print theme_nice_menus_main_menu( array(
            'direction' => 'down',
            'depth' => -1,
          ) );
        }
        else{
      
          print theme('links__system_main_menu', array(
            'links' => $main_menu,
            'attributes' => array(
              'id' => 'main-menu',
              'class' => array('links', 'inline', 'clearfix'),
            ),
            'heading' => array(
              'text' => t('Main menu'),
              'level' => 'h2',
              'class' => array('element-invisible'),
            ),
          ));
        } ?>

 

当改完代码后,如果Nice Menus模块开启了,模板就会应用Nice Menus,而如果没启动Nice Menus,系统会用回Zen默认的菜单。
可以查看theme_nice_menus_main_menu()函数,这是生成nice menu 的函数。有两个参数,一个是控制方向的(direction),默认是Down(向下);一个是控制层级的(depth),-1 表示不限制。

第三步,修改Zen的默认css,必须确保样式中有“overflow: hidden”;这样当内容超出div区域时候,就能做隐藏,而不至于导致变形。

 

评论

hui2011的头像

辛苦诗人了,不过superfish模块感觉更好用,诗人可以考虑增加这个模块的嵌套使用方法!另外,drupal 6和drupal 7的函数有些不一样,写教程的时候,最好声明一下是那个版本,谢谢