dede:arclist的各種屬性詳解及orderby的各種排序方法
時間: 2018-12-01 10:11
閱讀: 次
作者:素材無憂網(wǎng)
制作DEDECMS的模板進行二次開發(fā),就離不開DEDE的dede:arclist調(diào)用文章列表,及相關(guān)的各種ORDERBY參數(shù)進行排序。以下對DEDE的ORDERBY排序方式進行詳細解說
1,按點擊量(文章閱讀量)排序(orderby='hot' 或 orderby='click'),也可通俗的理解為網(wǎng)站熱門文章
2,隨機排序 orderby='rand' 用來隨機抽取文章排序,提高一些偏門文章曝光率
3,按最后評論的時間排序 orderby='lastpost'
4,按文章得分排序,這個得分是頂踩的得分,頂越多這個分值越高 orderby='scores'
5,按文章ID排序 orderby='id',其實和下面的按文章發(fā)布時間排序是一樣的
6,按發(fā)布時間排序(orderby='sortrank' 或 orderby='pubdate' )
以上6種最常用。
新版DEDE(5.6以后)新增weight排序方式,按文章前后關(guān)系排序orderby='near'
7,按文章權(quán)重排序orderby='weight',按權(quán)重排序需要在錄入文章時候手動調(diào)整文章權(quán)重值,并且默認DEDE不開通按權(quán)重排序功能,需要修改arclist.lib.php,或者{dede:arclist titlelen='38' flag='h' noflag='a' isweight='y' orderby='weight'}
[[field:typelink/]][field:title/][field:pubdatefunction=MyDate('y-m-d',@me)/]
{/dede:arclist}
這樣使用,增加isweight='y'參數(shù)。
另外weight排序默認按權(quán)重越小越靠前來排序,如需改成越大越靠前需要改動arclist.lib.php文件,方法如下:
打開\include\taglib\arclist.lib.php
大概在572行
$orderWeight = list_sort_by($orderWeight, 'weight', 'asc');
將asc修改為desc
$orderWeight = list_sort_by($orderWeight, 'weight', 'desc');
8,按文章前后關(guān)系調(diào)用,orderby='near'
9,新版DEDE(5.7以后)新增goodpost,badpost按文章頂?shù)臄?shù)量,和踩的數(shù)量拍序
案例說明:
{dede:arclist typeid='4' titlelen='24' row='4' flag='p' orderby='id' orderway='asc'}
{/dede:arclist}
以上案例:從欄目編號(typeid='4')4的欄目,取4組數(shù)據(jù)(row='4'),標題長度截取24個字符(titlelen='24'),只取包含圖片的文章(flag='p'),按文章ID排序(orderby='id'),取出來的數(shù)據(jù)按ID降序排列(orderway='asc')
能給orderby賦值的只能是上面列出的值,也就是說dede:arclist 標簽只能按照上面列出的字段排序。
那怎樣才能按照自定義的字段排序呢?假如我現(xiàn)在在dede_archives表里面添加了一個字段NewField,
我想按照這個字段排序。直接這樣寫:{dede:arclist orderby='NewField' }是不行的。那應(yīng)該怎樣修改?
修改文件include/arc.listview.class.php,參考附件arc.listview.class.php(版本5.5utf8),修改如下:
1、在第560行至562行處添加如下代碼:
else if($orderby=="NewField") {
$ordersql = " order by arc.NewField $orderWay";
}
2、修改603行代碼,修改如下:
if(ereg('hot|click|lastpost|NewField',$orderby))
上面的修改在5.7utf8版本通過,其他版本類似。
標簽: