由于系统没有自带下载排行调用标签,所以只能用SQL标签来实现。
完美标签,下面会给出详细说明,适用于V5.5版本,其他版本未测试。
先来看一段代码:
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id order by downloads DESC limit 0,10; '}
{/dede:sql}
复制代码
这个就是SQL调用下载排行的,已经实现了静态地址调用。
limit 0,10; 的意思是调用10调,想调用多少条只要修改“10”为你想要的数字。
如过你想实现调用特定版块的下载排行,只需要在limit 0,10; 的后面加上"where typeid = xx " XX就是栏目ID。
比如我想调用栏目10的下载排行,代码就是这样:
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id WHERE typeid = 10 order by downloads DESC limit 0,10;'}
{/dede:sql}
复制代码
这里有个小技巧:
typeid =后面的值可以用当前栏目ID的标签,这样可以在每个栏目列表页实现当前栏目的下载排行调用,具体的望读者自己探究。
当然也可以用typeid >或者<来限定栏目范围。
特定栏目调用已经解决,那么就剩下分时段调用了,可分为日,周,月,年,甚至自定义天数或者小时,代码如下:
{dede:sql sql='Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON
A.id = D.id WHERE typeid = 10 and pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 7 day) order by downloads DESC limit 0,10;'}
{/dede:sql}
复制代码
注意,我这是在上一个特定栏目的前提下再加一个时间条件语句,所以,我用了 and ,后面蓝色背景部分为所需要的内容,如果不想特定栏目,就把青绿色部分代码和紧跟着的“AND”去掉就行。
pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 7 day) 的意思是取7天内的数据,我们只需要修改数字"7"就可以实现我们的目标,比如10天就是pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 10 day) ,如果想调用一个月的数据,那就是pubdate > UNIX_TIMESTAMP( CURDATE( ) - INTERVAL 1 month) 一年的话只要把"day"改成"year"即可。
标签到这里基本上已经完美了。
附送另外一个小小的标签,关于调用今日更新情况的调用:
【{dede:sql sql="SELECT count( ID ) AS c FROM dede_archives WHERE pubdate > UNIX_TIMESTAMP( CURDATE( ) ) and typeid = 特定栏目ID"}今
日更新[field:c /]篇文章{/dede:sql} 】
评论列表()