我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

一、让list标签支持多字段排序
织梦list标签的orderby属性只支持按一个字段排序,如果想多字段排序的话,我对后台的PHP进行了修改,使其可以支持多字段排序,修改如下:
先找到文件arc.listview.class.php 在主目录include文件夹下,找到 
 //如果不用默认的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 `dede_archives` arc
           LEFT JOIN `dede_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 `dede_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 `dede_archives` arc LEFT JOIN `dede_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 `dede_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 `dede_archives` arc LEFT JOIN `dede_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 `dede_archives` arc
           LEFT JOIN `dede_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'}

我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为2000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、网站优化、网络推广、竞价账户托管、信息流平台运营、短视频剪辑、自媒体运营等方面的需求...
请立即点击咨询我们或拨打咨询热线: 18031152740,我们会详细为你一一解答你心中的疑难。业务经理在线

我们已经准备好了,你呢?3

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

咨询热线

18031152740

上班时间

周一到周五

售后热线

18031152740

扫码微信咨询
线