這裡指的是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排序判斷**(紅色部分為新新增**)。
//排序方式3、再在第778行處找到此段**$ordersql = '';
if($orderby=="senddate" || $orderby=="id")
else if($orderby=="hot" || $orderby=="click")
else if($orderby=="lastpost")
else if($orderby=="weight")
else
//如果不用預設的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 因為是從別處獲取的路...