如何讓dedecms的list標簽按照weight方式排序

  • 作者: admin
  • 發布日期: 2013-08-01 15:41:17
  • 點擊:

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行左右,保存文件更新 即可實現按照權重排序。


 

網站備案所需要提供的資料清單

目前,國內每個網站都必須具有信息產業部批準的備案號才能正常開通,否則只有選擇國外的服務器。
欧美性XXXX极品高清HD,永久免费A片在线观看全网站,免费观看成人A片免费不卡在线,美女黄18以下禁止观看免费的