花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網,按 + 收藏我們
登錄 注冊 退出 找回密碼

織夢做商城,按銷量,價格等自定義模型字段排序列表解決方案

時間: 2018-12-11 08:44 閱讀: 作者:素材無憂網

做織夢(5.7)商城,會用到按銷量,價格等自定義模型字段排序列表,這時就需使用freelist標簽。但freelist標簽
不支持按照自定義字段排序,實現此功能的解決辦法如下:


以添加按商品價格(自定義字段名:price)排序為例


1、打開后臺模板dede/templets/freelist_add.htm
   找到大概243行<select name="orderby" id="orderby" style="width:120">,為其添加一個選項到最后
   結果如下:
               <select name="orderby" id="orderby" style="width:120">
                  <option value="sortrank">置頂權限值</option>
                  <option value="pubdate" selected>發(fā)布時間</option>
                  <option value="senddate">錄入時間</option>
                  <option value="click">點擊量</option>
                  <option value="id">文檔ID</option>
                  <option value="lastpost">最后評論時間</option>
                  <option value="postnum">評論總數</option>
                  <option value="price">商品價格</option>
                </select>
   保存關閉


2、打開后臺模板dede/templets/freelist_edit.htm
   找到大概219行 $sorta = "sortrank,置頂權限值;pubdate,發(fā)布時間;... ,為其添加一個選項到最后
   結果如下:
   $sorta = "sortrank,置頂權限值;pubdate,發(fā)布時間;senddate,錄入時間;click,點擊量;id,文檔ID,lastpost,最后評論時間;postnum,評論總數;rand,隨機獲取;price,商品價格";
   
   然后在下方<select name="orderby" id="orderby" style="width:120">最后同樣添加一個選項
                 
              <select name="orderby" id="orderby" style="width:120">
                <?php
                echo "<option value=\"$orderby\" selected>{$sortarrs[$orderby]}</option>\r\n";
                ?>
                  <option value="sortrank">置頂權限值</option>
                  <option value="pubdate">發(fā)布時間</option>
                  <option value="senddate">錄入時間</option>
                  <option value="click">點擊量</option>
                  <option value="id">文檔ID</option>
                  <option value="lastpost">最后評論時間</option>
                  <option value="postnum">評論總數</option>
                  <option value="price">商品價格</option>
                </select>
   保存關閉


3、添加自由列表時,就可以選擇“商品排序”這個選項了。


4、打開include/arc.freelist.class.php
   找到
        //排序方式
        $ordersql = "";
        if($orderby=="senddate")
   這段代碼,在最后一個else前面添加一段代碼,結果如下:
//排序方式
        $ordersql = "";
        if($orderby=="senddate")
        {
            $ordersql=" ORDER BY arc.senddate $orderWay";
        }
        else if($orderby=="pubdate")
        {
            $ordersql=" ORDER BY arc.pubdate $orderWay";
        }
        else if($orderby=="id")
        {
            $ordersql="  ORDER BY arc.id $orderWay";
        }
        else if($orderby=="hot"||$orderby=="click")
        {
            $ordersql = " ORDER BY arc.click $orderWay";
        }
        else if($orderby=="lastpost")
        {
            $ordersql = "  ORDER BY arc.lastpost $orderWay";
        }
        else if($orderby=="scores")
        {
            $ordersql = "  ORDER BY arc.scores $orderWay";
        }
        else if($orderby=="rand")
        {
            $ordersql = "  ORDER BY rand()";
        }
        else if($orderby=="price")  //自定義商品頻道按價格排序
        {
            $ordersql = "  ORDER BY ".$addtable.".price";
        }
        else
        {
            $ordersql=" ORDER BY arc.sortrank $orderWay";
        }
   
     最后最重要的一點:把下面一段代碼位置提前到排序這段代碼的前面來,否則無法取到$addtable的值
     查詢語句會出錯。調換以后的結果為:


        //獲得附加表的相關信息
        $addField = "";
        $addJoin = "";
        if(is_object($this->ChannelUnit))
        {
            $addtable  = $this->ChannelUnit->ChannelInfos['addtable'];
            if($addtable!="")
            {
                $addJoin = " LEFT JOIN $addtable ON arc.id = ".$addtable.".aid ";
                $addField = "";
                $fields = explode(",",$this->ChannelUnit->ChannelInfos['listfields']);
                foreach($fields as $k=>$v)
                {
                    $nfields[$v] = $k;
                }
                foreach($this->ChannelUnit->ChannelFields as $k=>$arr)
                {
                    if(isset($nfields[$k]))
                    {
                        if(!empty($arr['rename']))
                        {
                            $addField .= ",".$addtable.".".$k." as ".$arr['rename'];
                        }
                        else
                        {
                            $addField .= ",".$addtable.".".$k;
                        }
                    }
                }
            }
        }


       //排序方式
        $ordersql = "";
        if($orderby=="senddate")
        {
            $ordersql=" ORDER BY arc.senddate $orderWay";
        }
        else if($orderby=="pubdate")
        {
            $ordersql=" ORDER BY arc.pubdate $orderWay";
        }
        else if($orderby=="id")
        {
            $ordersql="  ORDER BY arc.id $orderWay";
        }
        else if($orderby=="hot"||$orderby=="click")
        {
            $ordersql = " ORDER BY arc.click $orderWay";
        }
        else if($orderby=="lastpost")
        {
            $ordersql = "  ORDER BY arc.lastpost $orderWay";
        }
        else if($orderby=="scores")
        {
            $ordersql = "  ORDER BY arc.scores $orderWay";
        }
        else if($orderby=="rand")
        {
            $ordersql = "  ORDER BY rand()";
        }
        else if($orderby=="price")  //自定義商品頻道按價格排序
        {
            $ordersql = "  ORDER BY ".$addtable.".price";
        }
        else
        {
            $ordersql=" ORDER BY arc.sortrank $orderWay";
        }
   
    保存關閉。

    至此,大功告成,如需添加其他字段,按照此方法處理即可。

    此方法較適用于分類不太多的情況,如果分類太多,那生成的列表就太多,需要考慮別的解決方案了。

版權聲明: 本站資源均來自互聯網或會員發(fā)布,如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除!謝謝!

轉載請注明: 織夢做商城,按銷量,價格等自定義模型字段排序列表解決方案

標簽:  
模板推薦