首页 > 教程指南 > WordPress 分类做导航栏,并高亮显示

WordPress 分类做导航栏,并高亮显示

2009年8月26日
人气:1,236 阅读评论 发表评论

     几乎每个网站都有一个导航栏,导航栏一般将网站的内容分成几个类目,然后在导航栏中显示出来,以方便读者查阅相关内容。WordPress博客也提供了此功能,但是不同的博客主题在导航栏的设置方面也不尽相同,现在大多数主题是以页面(page)作为导航栏类目的,但是这种方式似乎达不到“导航”的目的,个人觉得用分类(category)和页面(Page一起)做为导航栏更合适。本文将指导你在WordPress中,如何设计一个用分类和页面作为菜单的导航栏,并高亮显示当前所在的栏目。

     为了让读者了解当前所在的文章分类,网页设计师常常用一些比较突出的方式显示导航栏中的当前栏目,抬头看一下本文的上方,导航栏中的“教程指南”项目就被高亮显示了。

导航栏高亮显示

     其实稍微懂一点网页设计的朋友都知道,这可以通过CSS来实现,但关键是如何确定该文章属于哪个分类,WordPress已经提供了现成的方法,更简单,调用几个函数就可以实现,而且不需要太多额外的代码。下面我们一步一步地来实现我们的目的。

     WordPress主题都提供了导航栏,一般导航栏的代码在header.php这个文件中,找到相应的导航栏代码,改成如下形式,修改完毕后在浏览器里看看效果吧!注意:本文不讲解导航栏的样式设计,可根据需要自己定义相关的CSS和HTML。

/* 代码一 */
<ul>
<li><a title="Home" <?php if (is_home()) { echo 'class="current"';} ?> href="/">博客主页</a></li>

<?php wp_list_categories('depth=1&title_li=0&orderby=id&show_count=0&hide_empty=0&child_of=0'); ?>

<?php wp_list_page ('depth=1&title_li=0&sort_column=menu_order');*/?>
</ul>

     上面那段代码是通过无序列表的形式来显示导航栏的,第一个 <li> 显示的是博客主页,如果当前所在是主页,则高亮显示“博客主页”,高亮显示则是通过class=”current”样式来定义的,这个可以根据自己的需要定义。上面代码的第二行通过调用wp_list_categories()wp_list_pages()这两个函数来罗列所有的分类目录和页面,并且WordPress程序会自动将当前所在的分类或页面所在的<li>加上class=”current-cat”的CSS属性,你只需在你的主题CSS文件中定义一个名为current-catclass,来定义高亮形式即可。

     但是上面的那段代码也有一定的缺陷,就是进入文章页面后,导航栏就无法高亮了,访客就不容易知道这篇文章是属于哪个分类的了,那怎么解决呢?解决起来也比较简单,加入以上*代码一*后,先在浏览器里面浏览你的博客,然后“查看源文件”,找到导航栏的代码,我的是这样子的:

<ul>
<li><a title="Home"  href="/">博客主页</a></li>

<li class="cat-item cat-item-1 "><a href="/category/diaries" title="生活随感">生活随感</a></li>

<li class="cat-item cat-item-3 "><a href="/category/encyclopedia" title="百科全书">百科全书</a></li>

<li class="cat-item cat-item-4 "><a href="/category/material" title="素材下载">素材下载</a></li>

<li class="cat-item cat-item-5 "><a href="/category/showcase" title="橱窗展示">橱窗展示</a></li>

<li class="cat-item cat-item-6 current-cat"><a href="/category/tutorials" title="教程指南">教程指南</a></li>

<li class="cat-item cat-item-17 "><a href="/category/freebies" title="免费资源">免费资源</a></li>

<li class="page_item page-item-2 "><a href="/about" title="关于露兜">关于露兜</a></li>
</ul>

我们给上面的代码加入动态PHP代码:

<ul>
<li><a title="Home" <?php if (is_home()) { echo 'class="current"';} ?> href="/">博客主页</a></li>

<li class="cat-item cat-item-1 <?php if ( is_category('1') || in_category('1') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/diaries" title="生活随感">生活随感</a></li>

<li class="cat-item cat-item-3 <?php if ( is_category('3') || in_category('3') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/encyclopedia" title="百科全书">百科全书</a></li>

<li class="cat-item cat-item-4 <?php if ( is_category('4') || in_category('4') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/material" title="素材下载">素材下载</a></li>

<li class="cat-item cat-item-5 <?php if ( is_category('5') || in_category('5') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/showcase" title="橱窗展示">橱窗展示</a></li>

<li class="cat-item cat-item-6 <?php if ( is_category('6') || in_category('6') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/tutorials" title="教程指南">教程指南</a></li>

<li class="cat-item cat-item-17 <?php if ( is_category('17') || in_category('17') && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/freebies" title="免费资源">免费资源</a></li>

<li class="page_item page-item-2 <?php if ( is_page('2') && !is_category() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/about" title="关于露兜">关于露兜</a></li>
</ul>

     好了,将上面的代码改成你的内容,替换掉header.php中的导航栏代码即可。is_category()is_page()函数的使用方法可以参阅条件标签is_category()括号中的数字是根据前面的 cat-item-? 来确定的,如前面的class中是cat-item-6,则写成is_category(’6′)

     如果你有一定的网页设计基础,相信这并不是一件难事。如果遇到什么问题,可以在此发表评论,我会乐意效劳的。

如无说明,均为原创文章,转载请注明
文章转载自:露兜博客
本文标题:WordPress 分类做导航栏,并高亮显示
本文地址:http://www.ludou.org/wordpress-highlight.html

标签: 标签: ,
收藏 & 分享
  1. 2009年9月2日22:21 | #1

    你好,可否把你的收藏&分享代码分享一下,可以吗?

    [回复]

    Ludou 回复:

    回复@mosky
    收藏&分享代码详见:http://www.ludou.org/wordpress-bookmarks.html

    [回复]

    Ludou 回复:

    回复@mosky
    以后多交流a

    [回复]

  2. fangfangma
    2009年9月2日23:04 | #2

    首页 > 教程指南 > WordPress 分类做导航栏,并高亮显示

    上面的导航是如何实现的。要具体的代码

    [回复]

    Ludou 回复:

    回复@fangfangma

    <div>
    <a title="转到首页" href=”<?php echo get_settings(’home’); ?>/">首页</a>
    – <?php the_category(’, ‘); ?>
    – <?php the_title(); ?>
    </div>

    以上是全部代码,你再加个CSS样式就可以了。

    [回复]

    Ludou 回复:

    回复@fangfangma
    这个是主题中自带了,你使用的主题中没有吗?

    [回复]

    fangfangma 回复:

    默认中像是没有。正在学习。

    [回复]

  3. 2009年9月19日21:45 | #3

    能写成通用的代码,这样只是写死的几个分类

    [回复]

    Ludou 回复:

    第一个代码就是通用的代码,后面两个代码只是为了实现静态化而写的

    [回复]

    Mars 回复:

    我就是想问能不能通过通用的设置,让在文章页时分类导航也能高亮

    [回复]

    露兜 回复:

    那就真的没办法了,WordPress就没有提供这个功能,至少我还没有发现。

    [回复]

  4. 2009年9月30日00:44 | #4

    代码在哪呀,我怎么看不到

    [回复]

    Ludou 回复:

    点击“点击查看代码”即可看到了!

    [回复]

  5. 2009年12月10日17:04 | #5

    不错,正在装呢

    [回复]

  6. jA
    2009年12月23日12:49 | #6

    谢谢你的代码,但是使用以后,发现home页面不能高亮?
    请帮忙,谢谢!

    [回复]

    ludou 回复:

    注意一定要在home页的a标签下添加以下代码,if (is_home()) { echo ‘class=”current”‘;}

    [回复]

    jA 回复:

    谢谢ludou,我是按照
    <a title="Home" href=”/”>博客主页
    修改成
    <a title="Home" href=”/”>首页

    两种都不起作用,其他page、category都可以高亮!

    [回复]

    Ludou 回复:

    你应该认真的看上面的教程,做事切勿急躁,home高亮应该按上面说的那样写:
    <li><a title="Home" <?php if (is_home()) { echo ‘class="current"’;} ?> href="/">博客主页</a></li>

  7. jA
    2010年1月2日09:33 | #7

    抱歉,确实按照你的,依然无法home首页面高亮

    [回复]

    Ludou 回复:

    请确保你的网站css文件中已经加入了名为current的class,并且该class用于定义高亮属性,否则无法高亮!

    要不然你就用分类相同的高亮css定义吧,改成这样:
    <li><a title="Home" class="<?php if (is_home()) { echo ‘current-cat’;} ?>" href="/">博客主页</a></li>

    注意将上面的所有标点改成半角形式

    [回复]

  8. jA
    2010年1月6日10:35 | #8

    谢谢,按照你的修改还是不行,于是自己弄了一下
    <li class="” > <a href="/”>首页
    弄好了,谢谢你!

    [回复]

  9. jA
    2010年1月6日10:36 | #9

    <li class="” > <a href="/”>首页

    呵呵,原来要这样才能显示完整

    [回复]

  10. jA
    2010年1月6日12:27 | #10

    还想请教一个问题~
    能否把其中一项的文字用其他颜色高亮显示(即使不是当前页面高亮)
    譬如说:“橱窗展示”用红色文字,当前高亮的效果也生效

    [回复]

    Ludou 回复:

    把代码中的 橱窗展示 改成 <span style="color:red;">橱窗展示</span>

    吧color:red;改成你需要的颜色就行了。

    [回复]

    jA 回复:

    ok了,非常感谢!

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.