1. 程式人生 > >織夢dedecms列表頁顯示順序,根據個別欄位值實現重新排列

織夢dedecms列表頁顯示順序,根據個別欄位值實現重新排列

織夢文章列表中,比如我要求顯示最新文章,並按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";
     }