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

xmas_wordpress_ex2.png.jpg前言:
不同的页面有不同的内容.而Sidebar作为一个向访者推荐本站其它内容的区域,争对内容显示不同的Sidebar就变得尤为重要了。比如在首页的 Sidebar放上Feed收藏栏目,最新评论栏目,而在日志页Sidebar放上随机文章,最热文章。如果你是一个GG ADER,那么你就可以让首页不显示广告,日志页显示广告。好了,一起来动手。

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

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

不管是首页的index.php还是单篇日志页面的single.php,在文件的最后面,总是有这么两行代码:

  1. < ?php get_sidebar(); ?>
  2. < ?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文件里的:

  1. < ?php get_sidebar(); ?>

修改为:

  1. < ?php include_once(“sidebar2.php”); ?>

上传并覆盖single.php,刷新,搞定!

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

  1. < ?php
  2. if ( function_exists(‘register_sidebar’) )
  3.     register_sidebar(array(
  4.         ’before_widget’ => ‘<li id=”%1$s” class=”widget %2$s”>’,
  5.         ’after_widget’ => ‘</li>’,
  6.         ’before_title’ => ‘<h2 class=”widgettitle”>’,
  7.         ’after_title’ => ‘</h2>’,
  8.     ));

这几行代码是一封”申请书”,向申请了一个Widget。如果要在不同面面显示不同的侧栏,并且这个侧栏是要支持Widget的,那么需要向再写一封”申请书”申请一个Widgets。并且这封申请书是有名字的,名字格式应该这样写: ‘name’ => ‘名字’,名字应该和后面sidebar2.php调用些widgets的名字保持一致,那应该这样写:

  1. if ( function_exists(‘register_sidebar’) )
  2.     register_sidebar(array(
  3.         ’name’ => ‘sidebar2′,
  4.         ’before_widget’ => ‘<li id=”%1$s” class=”widget %2$s”>’,
  5.         ’after_widget’ => ‘</li>’,
  6.         ’before_title’ => ‘<h2 class=”widgettitle”>’,
  7.         ’after_title’ => ‘</h2>’,
  8.     ));

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

  1. < ?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar() ) : else : ?>
  2. < ?php endif; ?>

修改为:

  1. < ?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(sidebar2) ) : else : ?>
  2. < ?php endif; ?>

现在做最后一步的工作,打开single.php,找到:

  1. < ?php get_sidebar(); ?>

修改为:

  1. < ?php include_once(“sidebar2.php”); ?>

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

原文地址:WordPress不同页面调用不同侧边栏技术详解

这是我尝试过得唯一一次行的通的办法,遗憾的是,在原来地sidebar里面调用的widgets就不能在sidebar2里面再调用了。因此只能通过其他插件来解决这个问题,而我又不想这样子,所以没有修改。也许因为我不会修改的原因,总之,对于我来说是如此了。

◎如果你有兴趣,可以从这里阅读更多相关的文章。。。
此条目发表在 消遣 分类目录,贴了 , , , 标签。将固定链接加入收藏夹。

WordPress不同页面调用不同侧边栏技术详解》有 5 条评论

  1. longer 说:

    讲得很细……等有需要再仔细看!

  2. Brezeck 说:

    很受用。!

  3. 盒子 说:

    先保留下来吧

  4. 老杨 说:

    你好,看了这篇文章,觉得很不错。
    但是我遇到了一个问题,那就是两个sidebar里面的内容是不能重复的。
    如果我把一个widge放在sidebar1,那么这个widget将不能放在sidebar2里面了。
    我想实现的是:sidebar1放在首页,只显示最新文章,最新评论,sidebar2放在单个页面,显示最新文章,最新评论,分类,存档。
    应该怎么办?
    如果可以,请给我来信,非常感谢!
    semor.yang@qq.com

  5. Shian Chen 说:

    @老杨: 这个问题我也遇到过,也没弄明白。可以搜索一下看看,或者到论坛上提问,我回答不了:)

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>