这个问题已经困扰我好久了,一直想解决这个问题,但是一直没有足够的时间来弄,这个周末终于在我的坚持下,把这个困扰已久的问题解决了,心中的石头落了下去,整个人轻松了不少。相信还有很多人和我一样,一直想解决这个问题,但是苦于找不到方案。先将我的方案分享出来,希望对你有用。
首先,这个问题是可以通过插件来解决的,这里就有一个现成的插件可以用,那就是Widget Logic。关于它的用法我就简单地介绍一下:
下载Widget Logic,安装后激活。在小工具栏找到Widget logic。通过这个部件你就可以轻松实现不同页面展示不同侧边栏的功能了。具体就不介绍了,请参考相关的文档资料。
我主要想介绍的是如何通过代码来实现。因为插件的使用固然简单,但是插件越多博客越臃肿,会导致速度越来越慢,这是每个站长都不愿意见到的,如果你了解PHP,了解Wordpress的话,我建议你最好使用修改代码的方式来解决,废话就不多说了,直接步入正题吧。
在此之前,我先要简单介绍一下几个重要的php文件(主题文件夹下):single.php, index.php, sidebar.php, functions.php. single.php是所有文章页即内页,index.php是首页即主页, sidebar.php是侧边栏, functions.php中定义了一些函数。本次修改的步骤概括起来讲有四步:
1. 在functions.php中注册新的侧边栏,因为默认已经有一个侧边栏了。
2. 在single.php中引用sidebar2.php(区别于系统默认的sidebar.php)。
3. 将sidebar2.php中调用的Widget改为sidebar2。
4. 在小工具栏找到sidebar2栏,然后组织你的另一个侧边栏。
接下来,我们一步一步地分解:
1. 在functions.php中找到类似这样的代码:
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'before_widget' => '<li class="widgets">',
'after_widget' => '</li>',
'before_title' => '<h2 class="mainhead">',
'after_title' => '</h2>',
));
}
然后仿照这个注册一个新的侧边栏:
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'sidebar2',
'before_widget' => '<li class="widgets">',
'after_widget' => '</li>',
'before_title' => '<h2 class="mainhead">',
'after_title' => '</h2>',
));
}
这里的name属性不能省,它是区别于默认sidebar的标志。
2. 在single.php中找到类似这样的句子:
< ?php get_sidebar(); ?>
将它改为:
< ?php include_once("sidebar2.php"); ?>
2. 复制一份sidebar.php并重命名为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; ?>
你也有可能找到这样的代码:
其实本质是一样的,只不过表达方式不一样而已。同理可改成:
3. 修改以上三步后,上传代码到你的空间。刷新后查看你的小工具栏,是不是在小工具栏下面多了一个sidebar2。你只要轻松拖动左边的widget到sidebar2上就可以了。是不是很简单呢。
最后,其实修改Wordpress代码并不复杂,只要用心去研究,做好备份工作。什么问题都不是问题。重要的是你有没有决心去尝试一下。在这里,感谢Wopus中文平台对我提供的帮助,我也希望我的这篇文章能够帮助到更多的人。感谢你阅读本文,如果你还有什么不明白的地方请留言,我们会尽最大努力帮助你。
夜深了,我该洗洗睡了,明天还要上班呢!
本Blog文章除特别声明之外皆为原创文章,欢迎转载,转载请注明: 转载自JSSAY'S BLOG
本文链接地址: http://www.jssay.com/blog/index.php/2010/10/18/how-to-separate-the-main-inside-sidebar/
嗯,这方法是比较实在的办法
文章中的PHP代码前有一个空格,修改的时候注意把空格删除