讨论:关于Sidebar的一些想法

上一篇文章,我写了一些关于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要具备多次插入到边栏的能力。

哎呀,一不小心就洋洋洒洒地说了一堆,不知道大家对这个东西都有些什么看法啊?欢迎交流~~