会者不难啊,其实没啥难度,就是给个思路出来,免得大家再琢磨了。 我这个是实现最后一次顶时间开始,之前7天内、20条的数据的, 比如周排行,例如今天2009年2月10日,但是最后一个顶是1月30日的,那么就应该从1月30日开始往前7天到1月23日之间的数据。(好像按照以前的修改方法周排行的话就没数据显示了,以前的好像是按照文章发表时间算的,肯定不合理)。
1、首先要建立diggtoptime字段。(xxxxx_ecms_news表的,我这里就是按照新闻的表,其他表原理一样)
2、修改、\e\public\digg\index.php 文件中,让点“顶”增加1点“顶值”的同时,更新此次“顶的时间记录”,以便以后获取时间范围内排行判断之用。
将: $sql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]." set diggtop=diggtop".$n." where id='$id'"); 改为: $sql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]." set diggtop=diggtop".$n." , diggtoptime=now() where id='$id'");
3、最后,模板中调用[ecmsinfo]标签,使用SQL语句。下面是 最后一次顶时间开始,之前7天内、20条的数据。改天数范围是“interval 7 day”,3天就是“interval 3 day”。 改为读取10条就将“LIMIT 20”改为“LIMIT 10”即可。
标签示例如下:
[ecmsinfo]"select * from [!db.pre!]ecms_news Where phome_ecms_news.checked=1 and diggtoptime>date_sub((select diggtoptime from [!db.pre!]ecms_news ORDER BY diggtoptime DESC LIMIT 1), interval 7 day) ORDER BY diggtop DESC, diggtoptime DESC LIMIT 20",10,30,0,24,13,0[/ecmsinfo]
完。
不明白的下面回帖吧。
不过这样也不是100%完美,因为如果时间跨度内被顶的文章数不够读取限制的10条或者20条,就会显示不满。不过这也是可以理解的,人气太少的站可以没事站长自己找几篇文章来顶顶就好了。
上传以下图片:
|