WordPress不同页面调用不同侧边栏技术详解

2008年6月18日05:31:16 技术分享 32 20,441

感谢韩人.Net的投稿,这篇文章从某种意义上讲,让WordPress更像一个CMS了,所以,我们强烈推荐推荐你阅读这篇文章。
前言:
不同的页面有不同的内容.而Sidebar作为一个向访者推荐本站其它内容的区域,争对内容显示不同的Sidebar就变得尤为重要了。比如在首页的 Sidebar放上Feed收藏栏目,最新评论栏目,而在日志页Sidebar放上随机文章,最热文章。如果你是一个GG ADER,那么你就可以让首页不显示广告,日志页显示广告。好了,一起来动手。

正文开始:
WordPress中文平台目前使用的这个THEME为例。它是一个两栏主题,没有使用Widgets,所有页面全部使用这个相同的Sidebar。现在我们动手,让单独日志页面调用Sidebar2.php。

注意:下文提到的所有PHP文件.都是你目前使用的主题的目录里边,直接使用后台就可以修改.步骤是:进入后台 > Design > Theme Editor 。在右侧的模版文件列表里就可以选择要修改的文件并进行操作。

不管是首页的index.php还是单篇日志页面的single.php,在文件的最后面,总是有这么两行代码:
< ?php get_sidebar(); ?>
< ?php get_footer(); ?>

这两行分别是调用侧栏sidebar.php和页脚footer.php ,我们的目的是让日志页的侧栏显示显示sidebar2.php。所以我们需要修改的是single.php文件里的< ?php get_sidebar(); ?>,从而达到调用sidebar2.php,显示和首页不同侧边栏的目的。

到这里,我们需要分两种情况说明:
第一种情况:如果不使用主题的Widgets,那么只要两步就能完成对不同侧边栏的调用。
现在把当前主题的sidebar.php下载到本地,然后使用程序打开,可以先进行简单的修改,比如去掉最新日志,最新评论等调用代码,然后另存为:sidebar.php(这里先做简单的修改,确定调用可以实现,然后再对sidebar2.php进行自己喜欢的DIY),然后上传新生成的sidebar2.php到当前主题目录下。

找到single.php文件里的:
< ?php get_sidebar(); ?>
修改为:
< ?php include_once("sidebar2.php"); ?>
上传并覆盖single.php,刷新,搞定!

第二种情况:如果你使用了Widgets,只需要4步,也就能实现对不同侧边栏的调用。
使用第二种情况,说明你的主题支持Widgets,那sidebar.php也是支持Widgets的。
重复第一种情况中新建sidebar2.php的步骤。
接着打开function.php,找到类似的代码:
< ?php if ( function_exists('register_sidebar') ) register_sidebar(array( 'before_widget' => '',
'after_widget' => ,
'before_title' => '

',
'after_title' => '

',
));

这几行代码是一封”申请书”,向Wordpress申请了一个Widget。如果要在不同面面显示不同的侧栏,并且这个侧栏是要支持Widget的,那么需要向Wordpress再写一封”申请书”申请一个Widgets。并且这封申请书是有名字的,名字格式应该这样写: ‘name’ => ‘名字’,名字应该和后面sidebar2.php调用些widgets的名字保持一致,那应该这样写:
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name' => 'sidebar2',
'before_widget' => '< id="%1$s" class="widget %2$s">',
'after_widget' => ,
'before_title' => '

',
'after_title' => '

',
));

将上面这句加到原先的”申请书”后面去。现在,需用将sidebar2.php中原来调用默认Widgets的代码改为调用sidebar2这个刚申请的Widgets。打开Sidebar2.php,找到这样的代码:

< ?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar() ) : else : ?>
< ?php endif; ?>

修改为:
< ?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(sidebar2) ) : else : ?>
< ?php endif; ?>

现在做最后一步的工作,打开single.php,找到:
< ?php get_sidebar(); ?>
修改为:
< ?php include_once("sidebar2.php"); ?>
保存文件,上传。
现在去后台的Widgets设置,会发现在下拉列表中多出一个Widget了,它的名字为Sidebar2,现在需要为他添加上一些东西。
概括一下第二种情况的大体步骤
* 在functions.php”申请”一个Widgets
* 在single.php中调用sidebar2.php
* 将sidebar2.php中调用的widgets修改为sidebar
* 拖一下你的Widgets
到此,也就完成了不同页面显示不同sidebar的教程,可以设置single.php,那其他页面呢?搜索页面呢?所以,使用这个思路,可以尽可能的在不同页面的sidebar中展示更多的内容,这也印证了我在开篇时候的那句话,这个技术的合理使用,会让WordPress真正的更像CMS。

Wopus中文平台会在这两天对Sidebar进行修改,以崭新的面貌,更多的内容和大家分享WordPress的点点滴滴!

如果有什么不懂的,欢迎留言,也可以去韩人.Net那里留言,也欢迎到论坛讨论!

评论已关闭!

目前评论:32   其中:访客  24   博主  0   引用   8

    • 老N 老N 6

      一直想这么做,就是太懒了…

      • 酋 长 酋 长 9

        @ 老N 晕菜,这么做,可以把博客利用的更加合理有效!

        • 老N 老N 6

          我也是这么想的。尽最大可能利用侧边栏,只是主页和文章页要有哪些不同还没想好。

          • 酋 长 酋 长 9

            @ 老N 看Wopus中文平台的吧,这两天会逐渐把页面完善起来!

            • willerce willerce 2

              呃。来给自己支持一下。

              • @i@生物柴油 @i@生物柴油 3

                这样确实很好,但是和有些插件好像有冲突,next gallery在自定义摘要中就不能用了。

                • lostindream lostindream 0

                  请问你的这款风格哪有下载啊??

                  • 辐射鱼 辐射鱼 6

                    @楼上的,这个主题叫box-tube

                    • 木子 木子 1

                      想问个也是关于侧边栏的问题。三栏的模板,怎么把两个侧边栏放到左右两边?现在同一侧的,谢谢指教。。

                      • 酋 长 酋 长 9

                        这样的问题,建议直接下载一个三栏的主题,便能知道了!

                        • patrick patrick 0

                          版主你好,我用的是mimbo主题,在sidebar2.php中找不到您例子提到的那些语句,下面是该主题中相关内容,不知如何修改,谢谢!

                          <?php

                          // grab the contents of the sidebar
                          ob_start();
                          dynamic_sidebar()
                          $sidebarContent = ob_get_contents();
                          ob_end_clean();

                          if ( $sidebarContent != “” ) {

                          echo “”;
                          echo $sidebarContent;
                          echo “”;

                          } else {

                          • 酋 长 酋 长 9

                            @ patrick sidebar2也是新生成的,这种CMS的主题可能需要单独的设置,如果有问题,你可以在我们的论坛http://bbs.wopus.org提出来!

                            • jok jok 2

                              比较复杂
                              研究下

                              • maqingxi maqingxi 2

                                方法是好方法,做起来有点麻烦,呵呵。

                                • 雪深 雪深 3

                                  抱歉 我看完了!发现我不是我想要的!Google骗了我!

                                  我想在一个页面调用某个分类的文章 能够输出摘要 并且支持翻页!

                                  • dogorgod dogorgod 2

                                    受用之…赞

                                    • 邵希杰 邵希杰 1

                                      这个做法非常明智。
                                      我也想在不同页面展示不同内容。
                                      本来想在一个sidebar文件修改,
                                      这个思路很不错。学习了。

                                        • 酋 长 酋 长 9

                                          @邵希杰 当然也可以,但那样一个sidebar会很大。

                                        • 邵希杰 邵希杰 1

                                          应该也可以这样整吧?

                                          • chancat chancat 1

                                            喔喔,还是喜欢这样的手工方法~

                                            • 豬頭六 豬頭六 1

                                              我主題就是這么搞的

                                              • 静夜燃香 静夜燃香 0

                                                费了些周折,算是修改好了,多谢博主。

                                                • 义乌SEO 义乌SEO 0

                                                  最近正在研究这个,刚开始还想着是不是要新建很多栏目,分别上传一个wordpress程序。。。
                                                  看来技术要补一补了。

                                                  • Superoutman Superoutman 2

                                                    实用,正在研究

                                                  • 来自外部的引用: 8

                                                    • 酷米小客 – 每日网摘 » Blog Archive » links for 2008-06-18
                                                    • WordPress不同页面调用不同侧边栏 | 老N的博客
                                                    • 一次小改版 : 信息刃
                                                    • 左岸读书_blog » Blog Archive » 我的WordPress之路——左岸读书的创建之路
                                                    • yo2博客不同页面显示不同侧边栏的方法 | 汽车修理厂管理与汽车维修管理软件
                                                    • 主题修改备忘 | 静夜燃香
                                                    • Geek——调用不同版面侧边栏的方法
                                                    • 不同页面调用不同侧边栏技术详解 | 志同道合