最近在做一个客户的网站,准备把wordpress当作CMS来做(省时省力:))。刚好wordpress3.0发布了,popomore同学已经用上了,我也尝试这用wordpress的导航菜单功能来做客户网站的导航。
一些基本的知识
把wordpress3.0升级完之后,在Appearance菜单底下就有Menus的选项,见下图:
Theme location面板是选择在你主题中已经注册了的导航菜单。如果要使用导航菜单,必须在主题里先注册,代码如下:(我注册了两个导航菜单)
// This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'primary_left' => __( 'Primary Navigation Left', 'moonbay' ), ) ); register_nav_menus( array( 'primary_right' => __( 'Primary Navigation Right', 'moonbay' ), ) );
这里有几个参数,其中 primary_left和primary_right是两个导航菜单的注册标识, Primary Navigation Left和Primary Navigation Right是菜单的名称,会显示在Theme location面板里的下拉框中。moonbay则是我为主题的命名。
注册完导航菜单后,就可以来编辑了。Custom links, Pages, Categories三个面板,可以添加自定义链接,页面,或者分类到导航菜单里去,这样就可以很方便地做出CMS的导航了(见文章开头的那张图)
用导航菜单的第一个trick
我一开始只注册了一个导航菜单,后来发现不能满足需求。如本文开头那张图所示,我想让导航菜单的左边三个靠左,右边三个靠右。在我的html的DEMO里是这样的:
<div id="nav">
<ul>
<div class="left">
<li class="active"> <a href="#" title="首页"> Home</a> </li>
<li> <a href="#" title="首页"> News</a> </li>
<li> <a href="#" title="首页"> Membership</a> </li>
</div>
<div class="right">
<li> <a href="#" title="首页"> Activities</a> </li>
<li> <a href="#" title="首页"> About</a> </li>
<l> <a href="#" title="首页"> Contact</a> </li>
</div>
<div class="clear"> </div>
</ul>
</div>
left和right两个class设为float:left和float:right,这样就实现了左边靠左,右边靠右。
而现在如果只注册一个导航菜单的话,不能在li标签外在包一个div,如果通过js来判断前三个li外包一个div的话,又挺别扭的(那样我还不如完全hard coding)。后来想到,我可以注册两个导航菜单,都是我的主导航,只不过一个在左,一个在右:
< ?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary_left' ) ); ?> </div><!-- #left_nav --> <div class="right"> < ?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary_right' ) ); ?> </div><!-- #right_nav -->
这样我就实现了DEMO中的效果。导航菜单的好处就是在开发完主题之后方便客户使用,毕竟你不能要求他们去改模板,你也不希望客户仅仅是想改一下导航菜单条目的顺序或者文字,就来电话你。hard coding适合给自己用,但wordpress3.0支持了导航菜单,则可以说开启了一个建站的小时代。因为wordpress的开发者社区可是相当红火的,会有各种各样的tricks冒出来。本文所举的只是小小的一粒。


风羽
07/08/2010, 16:11
我也在学习这个东西,升级了3.0但导航倒没用上
shimu
07/08/2010, 19:13
@风羽 – 3.0的新东西蛮多的~