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

感谢韩人.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条评论

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

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

  3. 版主你好,我用的是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 {

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

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

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

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

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

已关闭评论。