读者墙就是一个页面能够显示活跃用户的头像,并且是按照用户的评论次数来进行排序的。

那么loper主题的读者墙默认是统计当前自然月的用户评论数据,也就是说,9月底评论很活跃的用户,到了10月数据就重新开始算,只要评论1条就能立即上墙,这显然是不太合理的。所以我们需要改一下这个时间范围的规则。

我们先找到读者墙页面的模板代码guestbookandwall.php:

WHERE MONTH(comment_date)=MONTH(now()) and YEAR(comment_date)=YEAR(now())

显然这段代码的意思就是筛选了当年当月的评论数据,然后我上网搜了下计算时间差的SQL函数,一些人提供的是DATEDIFF函数,有3个参数,第一个是计算的单位,可以是day,month,year等等。第二个和第三个就是两个需要比较的日期1和日期2。如果日期1早于日期2,那么返回结果将是正的,否则为负的。

但是我试了一下DATEDIFF函数似乎不能用,可能是MySql没有这个函数,或者我的用法不对。然后我从网上找到另一种MySql的时间差计算函数TIMESTAMPDIFF,用法跟DATEDIFF一样,将上面那段改成如下,刷新后就能看到效果了:

WHERE (SELECT TIMESTAMPDIFF(day, comment_date, now())) <= 30

如果不加SELECT,如:

WHERE TIMESTAMPDIFF(day, comment_date, now()) <= 30

这个语法居然是错的,我之前找了好久没找出问题来,看来我的SQL基础也是够差的了。。。

好久没有改动主题了,其实改的这个过程还是挺享受的,呵呵。

loper 读者墙