校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 網站建設 > 建站知識 > DEDECMS給list標簽加上多字段排序功能

DEDECMS給list標簽加上多字段排序功能

POST TIME:2021-05-22 21:12

dedecms的list標簽orderby屬性只支持按一個字段排序,假如想多個字段排序的話,就需要對PHP舉辦修改,使其可以支持多字段排序,修改如下:

打開include/arc.listview.class.php,找到:

//假如不消默認的sortrank或id排序,利用連系查詢(數據量大時很是遲鈍) 
       if(preg_match('/hot|click|lastpost|title/', $orderby)) 
       { 
           $query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname, 
          tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath 
          $addField
          FROM `js_archives` arc 
          LEFT JOIN `js_arctype` tp ON arc.typeid=tp.id 
          $addJoin
          WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row"; 
       } 
       //普通環境先從arctiny表查出ID,然后按ID查詢(速度很是快) 
       else
       { 
           $t1 = ExecTime(); 
           $ids = array(); 
           $query = "SELECT id FROM `js_arctiny` arc WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row "; 
           $this->dsql->SetQuery($query); 
           $this->dsql->Execute(); 
           while($arr=$this->dsql->GetArray()) 
           { 
               $ids[] = $arr['id']; 
           } 
           $idstr = join(',',$ids); 
           if($idstr=='') 
           { 
               return ''; 
           } 
           else
           { 
               $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname, 
                      tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath 
                      $addField
                      FROM `js_archives` arc LEFT JOIN `js_arctype` tp ON arc.typeid=tp.id 
                      $addJoin
                      WHERE arc.id in($idstr) $ordersql "; 
           } 
           $t2 = ExecTime(); 
           //echo $t2-$t1; 
  
       }

替換為:

if($orderby=="default") 
       { 
           $t1 = ExecTime(); 
           $ids = array(); 
           $query = "SELECT id FROM `js_arctiny` arc WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row "; 
           $this->dsql->SetQuery($query); 
           $this->dsql->Execute(); 
           while($arr=$this->dsql->GetArray()) 
           { 
               $ids[] = $arr['id']; 
           } 
           $idstr = join(',',$ids); 
           if($idstr=='') 
           { 
               return ''; 
           } 
           else
           { 
               $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname, 
                      tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath 
                      $addField
                      FROM `js_archives` arc LEFT JOIN `js_arctype` tp ON arc.typeid=tp.id 
                      $addJoin
                      WHERE arc.id in($idstr) $ordersql "; 
           } 
           $t2 = ExecTime(); 
           //echo $t2-$t1; 
  
       } 
        else
       { 
           $query = "SELECT arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname, 
          tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath 
          $addField
          FROM `js_archives` arc 
          LEFT JOIN `js_arctype` tp ON arc.typeid=tp.id 
          $addJoin
          WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row"; 
       }

找到:

else { 
            $ordersql=" ORDER BY arc.sortrank $orderWay"; 
      }

替換為:

else if($orderby=="default"){ 
            $ordersql=" ORDER BY arc.sortrank $orderWay"; 
        } 
        else{ 
           $ordersql=" ORDER BY ".$orderby.",arc.sortrank $orderWay"; 
        }

此刻在模板中就可以應用了多字段排序了,模板應用如下:

{dede:list pagesize='17' orderby='arc.title desc,arc.id'}

 




收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
主站蜘蛛池模板: 南平市| 临桂县| 萨嘎县| 五华县| 库尔勒市| 湄潭县| 江川县| 道孚县| 奉化市| 贵南县| 蒙自县| 平凉市| 娱乐| 绵阳市| 桃源县| 宜春市| 攀枝花市| 安顺市| 昌平区| 长岛县| 清新县| 石城县| 蛟河市| 许昌县| 佛冈县| 吴旗县| 越西县| 海林市| 临沂市| 民乐县| 邵阳县| 德格县| 宜春市| 定南县| 繁峙县| 通渭县| 北辰区| 莫力| 普定县| 宁城县| 平泉县|