dedecms支援weight排序功能修改

2021-06-21 12:24:15 字數 1405 閱讀 8834

這裡指的是dede:arclist 標籤。支援weight排序的方法其實很簡單。截止到當前,2012.11.1號,dedecms5.7針對weight排序是有bug的。

涉及的檔案是\include\taglib\arclist.lib.php檔案:

第570行左右:if ( $isweight==』y』 )

這一行**簡直是廢柴,$orderweight = list_sort_by($orderweight, 『weight』, 『asc』); 對結果進行排序。這個是有問題的,因為在得到這個$orderweight之前,檢索文件表的語句為:

select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id where arc.typeid in (29) and arc.arcrank > -1 order by arc.sortrank desc

很明顯了吧,我們在寫標籤的時候,寫的是 ,本意是資料按照weight進行排序,二處理程式是按照sortrank 檢索的資料庫,指定 isweight=』y』 僅僅是起到了將檢索出的資料集再根據weight排序。

所以處理辦法非常簡單:在該程式檔案330行處,增加一行按照weight排序的處理語句:else if($orderby == 『weight』) $ordersql = 」 order by arc.weight asc」;

1、找到"根目錄\include\arc.listview.class.php"檔案。

2、修改**:在檔案第727行處新增按weight排序判斷**(紅色部分為新新增**)。

//排序方式

$ordersql = '';

if($orderby=="senddate" || $orderby=="id")

else if($orderby=="hot" || $orderby=="click")

else if($orderby=="lastpost")

else if($orderby=="weight")

else

3、再在第778行處找到此段**

//如果不用預設的sortrank或id排序,使用聯合查詢(資料量大時非常緩慢)

if(preg_match('/hot|click|lastpost|weight/', $orderby))

並新增紅色部分內容。

4、標籤呼叫:

這樣標籤就支援了按權重排序的呼叫,並且動靜態狀態下測試均成功!

砝碼問題 Weight

設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其總重 1000 用他們能稱出的重量的種類數。n1 n2 n3 n5 n10 n20 表示各種砝碼的個數 total n n表示可以稱的不同重量的個數 1 1 0 0 0 0 total 3 問題分析 對每個砝碼掃瞄 狀態轉移方程 opt j...

weight屬性全面解析

weight並非網上很多文章所敘述的那樣 文章都過於片面 weight是指某個元件在布局中 剩餘空間 中的顯示權重,那麼所謂的剩餘空間又是什麼意思呢,其實是在沒有設定weight屬性的控制項優先顯示的情況,將未占用的布局空間合理分配給設定過weight的元件 例如,0號和2號按鈕都設定了androi...

優選最高的weight值

優選最高的 weight 值,這個是 cisco 的私有屬性,優選選擇最高的 weight 從本地產生預設是 32768 從別處獲取預設是0在 r4上發現去 2.2.2.0 24 走的下一跳是 24.1.1.2 前面已經說過其原因,可以看到這裡兩條路由的 weight 值都為0 因為是從別處獲取的路...