<address id="r9vd9"><address id="r9vd9"><listing id="r9vd9"></listing></address></address>

      歡迎您光臨深圳塔燈網絡科技有限公司!
      電話圖標 余先生:13699882642

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

      發表日期:2018-04 文章編輯:小燈 瀏覽次數:4159

      做織夢(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>發布時間</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,發布時間;... ,為其添加一個選項到最后
      結果如下:
      $sorta = "sortrank,置頂權限值;pubdate,發布時間;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">發布時間</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";
      }

      保存關閉。

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

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


      本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.webpost.com.cn/11261.html
      相關cms文章
       八年  行業經驗

      多一份參考,總有益處

      聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

      咨詢相關問題或預約面談,可以通過以下方式與我們聯系

      業務熱線:余經理:13699882642

      Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

      国产成人精品综合在线观看