織夢dedecms列表頁顯示順序,根據個別欄位值實現重新排列
阿新 • • 發佈:2018-12-31
織夢文章列表中,比如我要求顯示最新文章,並按id降序排列,但是,附加表中有一個欄位,就叫結束時間的endtime欄位,要求按這個欄位的值重新排序.比如要求,如果結束時間的值小於系統當前時間,則這個欄位值對應的文件自動放到文章列表的最結尾顯示.
如下圖,在文章列表中.要求結束的活動自動排到最後面顯示.怎麼實現呢
需要修改系統檔案.include\arc.listview.class.php
找到類似這句$artlist1 .= $this->dtp2->GetResult();
修改為,意思是說,如果文件是已經結束活動的資訊,與進行中的分開運算.最後進行拼接.這樣,就可以把本已按id降序呼叫好的20個文章列表,進行重新調整位置後,再顯示
if($row['myendtime']!=''){ if($row['myendtime']<time()){//已結束的活動 $artlist2 .= $this->dtp2->GetResult(); }else{ $artlist1 .= $this->dtp2->GetResult(); } $artlist=$artlist1.$artlist2; }else{ $artlist .= $this->dtp2->GetResult(); }
如果是網站首頁.用dede:arclist呼叫列表.則需要修改另外一個檔案.\include\taglib\arclist.lib.php,找到下面兩句.
$liststr = $dtp2->GetResult();
$artlist.= $liststr."\r\n";
整體替換為
$liststr = $dtp2->GetResult(); if($row['myendtime']!=''){ if($row['myendtime']<time()){//已結束的活動 $artlist2 .= $liststr."\r\n"; }else{ $artlist1 .= $liststr."\r\n"; } $artlist=$artlist1.$artlist2; }else{ $artlist.= $liststr."\r\n"; }