POST TIME:2018-09-02 13:24
DEDECMS(織夢)5.6系統支持文檔權重weight排序,可以在模板中使用:
{dede:arclist row=’10′ titlelen=’50′ orderby=’weight’} •[field:textlink/]<br/> {/dede:arclist}
其中的orderby=’weight’就實現了文檔按照權重排序了。這是arclist標簽,可以用在任何位置來調用文檔列表,然而,在欄目列表頁,如果你要使用list標簽(實現文檔列表分頁),也想用權重(weight)排序,
{dede:list pagesize=’10′ titlelen=’50′ orderby=’weight’} •[field:textlink/]<br/> {/dede:list}
你會發現,你的列表并沒有按照權重(weight)排序,無論你怎么修改,它的順序就還是老樣子!經過多次測試,發現原來dedecms織夢對權重 weight排序的支持僅arclist標簽,并不支持list標簽,因此,就開始了對dedecms織夢系統的改造,讓它支持list標簽權重 weight排序,改造的文件主要是include目錄下的arc.list.class.php文件,打開文件,查找“else if($orderby==”lastpost”) {”語句,大概在609行,在此行前面按下回車健,插入如下語句:
else if($orderby=="weight") {$ordersql = " order by arc.weight $orderWay"; }
成為這樣:
//排序方式
$ordersql = ”;
if($orderby=="senddate" || $orderby=="id") {
$ordersql=" order by arc.id $orderWay";
}
else if($orderby=="hot" || $orderby=="click") {
$ordersql = " order by arc.click $orderWay";
}
else if($orderby=="lastpost") {
$ordersql = " order by arc.lastpost $orderWay";
}
else if($orderby=="weight") {
$ordersql = " order by arc.weight $orderWay";
}
else {
$ordersql=" order by arc.sortrank $orderWay";
}
繼續查找:
if(ereg(‘hot|click|lastpost’,$orderby))
語句,修改為:
if(ereg(‘hot|click|weight|lastpost’,$orderby))
修改完成后,保存,如果目標里面已經使用了weight排序,生成一下,就可以看到,文檔列表已經安裝weight排序
后記:進行了上面的修改,可以實現按照權重weight排序,但是,如果不在模板中寫明orderway=”asc”,無法實現權重越小越靠前,
解決方案1:
{dede:list pagesize=’10′ orderby=’weight’ orderway=’asc’} •[field:textlink/]<br/> {/dede:list}
要實現越重越大越靠前,只需要將上述代碼中的“orderway=’asc’”去掉就可以了。
究其深層原因,是arc.list.class.php文件中,576行:
$imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$innertext="",$tablewidth="100",$ismake=1,$orderWay=’desc’)
默認排序方式是降序排列,而非升序,考慮其它常用排序,如puddate等,此處不要修改的好。