前几天把主题的sidebar式样改进了一下,把单个日志的single.php页面改为单侧边栏,日志内容的宽度也相应增加。这其实是很久前就有的想法。首页用双侧边栏是想显示更多的信息,让浏览者能有更多的选择,而不必作出很多点击。然而,进入日志页面后,读者的注意力就全部集中在了日志内容本身,这时增宽content,能让浏览者获得更多空间,有更好的用户体验。另一方面,右侧的侧边栏很多内容不必再需要,而是可以加上最新评论、随机日志、热门排行等和日志更为相关的部分。由于对CSS和PHP本身都不是很熟悉,只能在网络上搜索方法,好在最终还是搞定了。
首先,想在首页显示两个sidebar,而single页面只显示一个,这个siderbar的内容和前两者还不同,那么原本的两个sidebar就可以不动,采用完全加入一个新sidebar的方法。首先找到single.php,在中间可以找到下述代码:
< ?php get_sidebar(); ?>
修改为:
就是在single页面内引入一个新的sidebar文件,当然singlesidebar.php是要你自己手写并传到主题文件夹下的。新的sidebar我没有考虑使用widget,完全手写,这样自定义度高很多,也能省去很多麻烦。
但是,后面的问题却让我很头疼。single页面是只有一个sidebar了,但是布局还是和首页一样的,也就是说一个sidebar占据了原来两个的宽度,并没有我想象中的效果。由于对CSS并不熟悉,只能用笨方法解决了。我把style.css中的content和sidebar部分完全复制了一遍,然后重命名为content_single和sidebar_single,再修改下width,套入singlesidebar中,就实现了现在的效果。
现在single页面的sidebar还是空的,需要手写加入内容。我用了中文WordPress工具箱中的函数,并作出了一些修改。最新留言中除去作者自身,另外主要加入了本月最热日志的函数。在get_mostcommented函数中,找到
post_date < '".date("Y-m-d H:i:s", (time() + ($time_difference * 3600)))."'
的条件,在后面加上
AND post_date > '".date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), 1, date("Y")))."'
PHP中Date/Time函数的详解,可以看这里。
对于sidebar的调整,或者它的内容、排序,期待大家的留言反馈。