dedecms5.6添加了按weight排序。
在首頁用{dede:arclist orderby='weight'}時一切正常,但進入到欄目列表則失效了,一看代碼呈現的規則是
{dede:list pagesize='10' orderby='weight'}與首頁不一致
解決步驟:
找到list解析文件include/arc.listview.class.php
--------------------------------------------------------------------------------
//排序方式
$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";
}
--------------------------------------------------------------------------------
發現排序規則里面并沒有按照weight排序,于是乎修改程序加入排序規則
--------------------------------------------------------------------------------
//排序方式
$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";
}
--------------------------------------------------------------------------------
更新欄目,好問題又出來了
--------------------------------------------------------------------------------
Error infos: Unknown column 'arc.weight' in 'order clause'
Error sql: Select id From `dede_arctiny` arc where arc.arcrank > -1 And ( arc.typeid = '10' OR CONCAT(',', arc.typeid2, ',') like '%,10,%' ) order by arc.weight desc limit 0,10
根據錯誤信息查找代碼,很快找到include/arc.listview.class.php第669行 為報錯的sql語句,通過檢查發現原來排序有兩種查詢,一個是單表查詢一個是組合查詢,而我們按weight排序需要進行組合查詢,而進入組合查詢的條件沒有包含weight,修改:if(ereg('hot|click|lastpost',$orderby))為if(ereg('hot|click|weight|lastpost',$orderby)),這句代碼就在654行左右,保存文件更新 即可實現按照權重排序。