織夢文章按權重排序終級解決方案

2021-06-22 10:03:03 字數 2118 閱讀 2154

織夢預設情況下是沒有開啟weight排序的需要修改arclist.lib.php

1、 在織夢系統中找到以下目錄\include\taglib中的arclist.lib.php檔案並開啟

大約在74 、75行找到:

// arclist是否需要weight排序,預設為"n",如果需要排序則設定為"y"

$isweight = $ctag->getatt('isweight');

把這行修改為:

$weight = $ctag->getatt('weight');

2、大約在327行找到

//文件排序的方式

$ordersql = '';

if($orderby=='hot' || $orderby=='click') $ordersql = " order by arc.click $orderway";

else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " order by arc.sortrank $orderway";

else if($orderby == 'id') $ordersql = "  order by arc.id $orderway";

else if($orderby == 'near') $ordersql = " order by abs(arc.id - ".$arcid.")";

else if($orderby == 'lastpost') $ordersql = "  order by arc.lastpost $orderway";

else if($orderby == 'scores') $ordersql = "  order by arc.scores $orderway";

else if($orderby == 'rand') $ordersql = "  order by rand()";

else if($orderby == 'weight') $ordersql = "  order by arc.weight asc";//在這裡增加一行---->如果沒有特定設定排序則按照權重先排序

else $ordersql = " order by arc.sortrank $orderway"; 

在首頁用時一切正常,但進入到欄目列表則失效了,一看**呈現的規則是與首頁不一致

找了半天終於找到了解決方法:

找到list解析檔案include/arc.listview.class.php  

//排序方式

$ordersql = '';

if($orderby=="senddate" || $orderby=="id") 發現排序規則裡面並沒有按照weight排序的判斷,於是乎修改程式加入排序規則 

//排序方式

$ordersql = '';

if($orderby=="senddate" || $orderby=="id") 更改好在後台更新欄目html,新問題又來了,更新報錯 

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(preg_match('/hot|click|lastpost',$orderby/))為if(preg_match('/hot|click|lastpost|weight',$orderby/)),這句**就在大概654行左右,儲存檔案更新

ok,再更新欄目頁面試試,可以排序了吧,不過要注意的是更改後不是按後台的提示"越小越靠前",而是"越大越靠前",如果你需要越小越靠前的話,呼叫的時候改為就行了,估計這是織夢dedecms遺漏的地方,希望在新版本中解決。

dedecms 文章按權重排序

參考 但是當我們在dede arclist標籤中使用orderby weight 來排序時,發現文章顯示並沒有起作用。我們在include taglib arclist.lib.php 開啟來看一下 在 的第74 75行,我們發現 isweight預設為n,所以我們在使用orderby weight...

織夢文章按權重排序的方法(正序 倒序均可)

首先要記住權重排序的標籤是 orderby weight dede 5.7 首頁 arclist 增加按權重排序 在織夢系統中找到以下目錄 include taglib中的arclist.lib.php檔案並開啟 大約在170行找到 innertext arcid 0,idlist channeli...

織夢 後台 權重 排序 不生效

織夢 後台 權重 排序 不生效 1.dede album edit.php 152行到172行 加入 weight weight 2.include arc.listview.class.php 查詢 else if orderby lastpost 大概在768行 在下面補充 else if or...