上一篇文章,我写了一些关于WordPress主题的模板文件层次结构的一个讨论,不过呢,那篇文章在写的时候,就是对照着模板文件结构图来写,基本上完全没有提到Sidebar的问题。
一个博客的侧栏作为一个提供辅助信息的区域,其实,是一块非常重要的区域。好些博客,喜欢在这里放各种各样的东西,简单列举一下,有加强博客页面SEO,向读者暴露更多入口点的,如最新文章,点击最多文章,随机文章等等;还有增加博客社会化的,如订阅图标,最新评论,评论最多用户等等;此外还有很多有意思的小挂件,像歌曲,search bar,统计之类的东西,当然还有广告。
但是,不知道大家有没有意识到这个问题,很多主题的侧栏,基本上一成不变,上篇文章也说了,WordPress的页面分成好几类,首页,文章页,归档页,搜索页,404等等,那么这些页面,根据其功能来说,使用完全相同的侧栏,是不是真的很妥当?
我最早是在Andor的WordZine和阅微堂体验到了根据页面种类来定制侧栏的妙处,我想,这两个站点的主人一定在这个地方动过很多脑筋和做过一些有意的思考才这样做的。
在WordZine的前身theme paradise,我看到帖子页使用侧栏来输出评论(是本文的评论),其实这个在别处也看到过,就是cnBeta,侧栏顶上输出最热评论,但是这个功能第一次在博客看到,竟然那么惊艳,很新颖。那个时候,theme paradise的主页侧栏输出的是Aside,就是一些文章的摘要,那个模板显示最新第0-第3篇文章全文,在侧栏输出第4-第8篇文章的摘要,然后底部多了底栏,输出其他内容。
而阅微堂(当然现在也已经改版了),首页侧栏输出三个文章列表,而在侧栏输出了相关文章,具体我记得不清楚了,当时,我就觉得,哇,侧栏变掉了。
当然,同学们可能已经发现了,我现在这里的博客也使用了不同的侧栏。如果感兴趣,你可以发觉一下,我的侧栏到底有何不同。我就不讲了。当然,我也只是一个尝试,欢迎大家对我的做法发表你们自己的看法。
然后我来讲讲,怎么实现这个不同的sidebar。对于手写侧栏的人来说,这个事情恐怕要简单得多。
这个模板标签大家可能很熟,用这个,就会自动去调用一个叫sidebar.php的文件,将这个部分加入到你的页面。其实,这个函数可以接受一个参数,就是sidebar name,可以调用sidebar-name.php文件到页面中,如果这个文件存在的话。
比如我的模板里,有sidebar-404.php,sidebar-single.php,和sidebar.php。我的帖子也,使用的调用就是get_sidebar('single');我的404用的就是get_sidebar('404');,这样,就在不同页面得到了不同的侧栏。
而对于使用Widget的同学来说,这个事情恐怕就要复杂得多,很有可能,目前,你们有没有能力实现这个做法。这就需要我们这些做插件尤其是做Widget的和做模板的来付出努力了。
1. 模板要支持多sidebar,像我说的那样,每个页面有对应的sidebar文件,而且,每个页面不是同一个sidebar。
2. Widget要支持多instance,就是一个Widget要具备多次插入到边栏的能力。
哎呀,一不小心就洋洋洒洒地说了一堆,不知道大家对这个东西都有些什么看法啊?欢迎交流~~

http://www.wpdesigner.com/2008/02/15/static-sidebar-sucks/
这里也有一些讨论
^_^,读了,不错~
问你一个问题,怎么在每个页面上发布文章?
以及,页面为什么不能评论呢?
每个页面上发布文章是什么意思,一个页面就相当于一篇文章,如果更多是不可能的,所以叫做页面嘛……不知道你说的每个页面发布文章是不这个意思。
页面不能评论,这个纯粹是主题的作者的没有在页面模板里面调用comment_template()函数造成的。也即页面里没有发布评论的地方,其实只要自己加上,页面也可以评论的。
可是,明明设计了“子页面”的功能,按字意的理解感觉好像可以通过新建子页来在页面中发布新的文章一样?
子页面不是那个意思吧,是说,一篇文章那个太长,要切成一页一页的。
我想到了,就是和我爱水煮鱼那个首页和火星的关系?是怎么回事?
水煮鱼那个火星是不一样的,那个是他自己写的,火星里的文章,也没有和及普通的日志帖子放在一起。你说的可能是在不同的页面显示不同分类的文章,这个是可以实现的。比如我的同学,就是我友链里面的“云卷云舒”她的普通文章放在一个页面,技术文章有一个专门的页面展示。
我说的就是那样的呀,不混合在普通日志里现实的单独的。你知道怎么做吗?
首先,创建一个数据库表,然后创建一个发帖的页面,通过这个页面发的帖子不会存入wp_posts这张表,而是存储到你自己创建的数据库表。然后自己写一个Loop,在你自己定义的页面发布文章。简单来说流程就是这样。直觉上,那样搞还不如再开一个博客呢……
好的。。。我明白了。。。
顺便问你一个,如何在最近评论里不显示自己呢?这个应该比较简单吧?
嗯,不知道你有没有用我的插件呢,有用的话,在Widget里面有个选项的,填上你自己的名字,就不会显示你自己了。
哪个插件啊?给我个连接
我用了wpkitcn,结果神奇的是英文界面,而且没有出现任何效果。。。。。咋回事呢。。
你的PHP是不是低于5啊……把_construct改成WPKitCN就好了。如果看不懂我在说啥,你等升级版吧,这两天我就放出来。这个问题困扰的人不少呢。
也可以通过插件来实现的,不过还是不如写代码来的灵活
没想到可以调用不同的侧边模板
呵呵,一切皆有可能,PHP可是动态生成页面的哦~~
不同页面实现不同的侧栏输出可能有利于SEO??
没有任何证据表明对SEO有利。但是就我个人的观点,能够增强博客页面可用性。
sidebar太多了好吗
这里面必然有弊端,比如多个sidebar文件,如果修改的话,每个都要修改。另外,准确的说,我说的问题不是多sidebar。而是说sidebar根据页面主要内容做相应的调整以给出更有用信息。
PS:听说过你最近在修改模板?还没有改完?不见动静。
我在重新制作模板,并不是在修改,头开得有点大了,现在有点样子了,但是离能用还很遥远……
首页、分类页、子页面等使用不同的侧边栏,一方面在SEO上有些帮助,但是也会减慢页面的下载速度,因为不同页要加载不同的SIDEBAR
我想,性能上应该不是问题,因为都是get_sidebar()这个模板标签,通过引用文件引用进来的,从方式上看每次载入页面是一样的。
我想最值得明确的一点是, sidebar 是次 content,了解这一点之后才能明确 sidebar 要包含什么内容,以及在不同的页面结构中调整内容的显示……
确实,我觉得sidebar完全应该提供些更有帮助的信息,如果完全一样,就没有看的必要了~~至于什么是更有帮助的信息,却是没有一个定论的……还需要摸索~~
很早就像弄这样一种主题。但是我技术不到家,为了想让跟一些常用插件兼容,所以一直在思考办法。
例如如果提交评论的表格到了侧栏的固定位置,那2i2j的回复评论插件点回复的内容框会错位等等。感觉会变的麻烦。如果不支持,很多博客都用了这个插件包括我自己,又舍不得放弃插件的功能。
偶爱偶家的那个插件点了回复以后会错位,其实是由于他使用js将表单搬移了位置,失去了原来的外层容器造成的,如果模板设计者在设计模板的时候,考虑到要兼容这个插件,可以使这种情况完全不出现的。同样,一般用户也可以通过简单地修改CSS来修正这个错位问题的。
唉,对啊,还是我技术不行。需要弄代码的帮忙。
尝试过,但感觉于我不太必要 ... 哈哈
我确实也并不确定,这很必要,也只是摸索,如果能有明确数据证明这个于SEO或者流量或者点击量有好处,我想很多人肯定会愿意尝试一下的,可惜没有~~>.<
我也想在不同页面实现不同的侧栏输出,但现在暂时还没有确定下来对应页面的输出,呵呵~~
你觉得我的布置怎么样?合理吗?
布局不错啊,把相关文章和订阅都放在侧栏里面,不占用正文的空间~~
你的主题看起来还蛮像Chrome浏览器的呢,很有先见之明啊,哈哈~~
首页和文章页的侧边栏分开,确实非常好。可惜我这样的菜鸟无缘享受……
这确实是个问题啊~~就算不是菜鸟,老是要去动那些代码,心里也很不舒服啊~~
我心很喜,我心无力
只能期待你们搞定了……
呵呵,你是MM么?WP看来还是不够平易近人啊~
男人
谢谢
相比sina这些肯定不够平易近人,但还是多了不少乐趣
我觉得我有能力实现..
不是很难..
你高大了。。。
哈哈,你们在说啥??
widgets本身就具有多sidebar的能力
嗯,确实是的,编程接口是存在的,但是并不是每个开发Widgets的人都会为多Sidebar做准备,就比如WP默认的那些个Widget,像分类啊,链接啊,都不支持多Sidebar,无论你有几个Sidebar,它们只能使用一次。
其实吧,这只是后台设置的显示问题,Widget本来就是多实例的。不过,不能在后台选择确实也是一个缺憾。
多实例支持需要额外的代码的,我这次WP Kit CN也没有提供多实例支持,主要是考虑如果用不上的话,会不会有性能上的影响。
这个问题,相信WP很快会修正的。因为这本来就不是大问题,仅仅是在后台不能再次选择而已。
如果自己改的话,可能需要修改核心代码。你可以尝试找找,看有没有相应的action可以使用。