質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.02%

【EC-CUBE2】並び替えの昇順降順を設定できるようにしたい。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 73

ItoHiroki815

score 6

並び替えの昇順降順を設定できるようにしたい。

EC-CUBE2にて商品の並び替え機能の追加をしております。
そこで、「昇順・降順」のボタンを作り、現在の並び替えている項目での昇順降順入れ替えを実装しようと思っております。

例↓
イメージ説明

list.php

    <!--{capture name=page_navi_body}-->
        <div class="paging clearfix">
            <!--{if $tpl_strnavi|trim && $tpl_strnavi != "&nbsp;"}--><div class="navi"><!--{$tpl_strnavi}--></div><!--{/if}-->
            <div class="sort">

                <!--{if $orderby != "date"}-->
                    <a href="javascript:fnChangeOrderby('date');">新着順</a>
                <!--{else}-->
                    <strong>新着順</strong>
                <!--{/if}-->
                <!--{if $orderby != 'price'}-->
                    <a href="javascript:fnChangeOrderby('price');">単価順</a>
                <!--{else}-->
                    <strong>単価順</strong>
                <!--{/if}-->
                <!--{if $orderby != 'selling_price'}-->
                    <a href="javascript:fnChangeOrderby('selling_price');">売価順</a>
                <!--{else}-->
                    <strong>売価順</strong>
                <!--{/if}-->
                <!--{if $orderby != 'profit_late'}-->
                    <a href="javascript:fnChangeOrderby('profit_late');">利益率順</a>
                <!--{else}-->
                    <strong>利益率順</strong>
                <!--{/if}-->
                <!--{if $orderby != 'quantity'}-->
                    <a href="javascript:fnChangeOrderby('quantity');">数量順</a>
                <!--{else}-->
                    <strong>数量順</strong>
                <!--{/if}-->
                <br />
                <!--{if $colName != '' && $tblName != ''}-->
                <a href="javascript:fnChangeOrderby('orderby_asc');">昇順</a>
                <!--{else}-->
                    <strong>昇順</strong>
                <!--{/if}-->
                |
                <!--{if $colName != '' && $tblName != ''}-->
                <a href="javascript:fnChangeOrderby('orderby_desc');">降順</a>
                <!--{else}-->
                    <strong>降順</strong>
                <!--{/if}-->
                表示件数
                <select name="disp_number" onchange="javascript:fnChangeDispNumber(this.value);">
                    <!--{foreach from=$arrPRODUCTLISTMAX item="dispnum" key="num"}-->
                        <!--{if $num == $disp_number}-->
                            <option value="<!--{$num}-->" selected="selected" ><!--{$dispnum}--></option>
                        <!--{else}-->
                            <option value="<!--{$num}-->" ><!--{$dispnum}--></option>
                        <!--{/if}-->
                    <!--{/foreach}-->
                </select>
            </div>
        </div>
    <!--{/capture}-->

/path/to/data/class/pages/products/LC_Page_Products_List.php

    /* 商品一覧の表示 */

    /**
     * @param SC_Product_Ex $objProduct
     */
    public function lfGetProductsList($searchCondition, $disp_number, $startno, &$objProduct)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();

        $arrOrderVal = array();

        $colName = '';
        $tblName = '';

        // 表示順序
        switch ($this->orderby) {
            // 販売価格が安い順
            case 'price':
                $objProduct->setProductsOrder('price02', 'dtb_products_class', 'ASC');
                $colName = 'price02';
                $tblName = 'dtb_products_class';
                break;

            // 新着順
            case 'date':
                $objProduct->setProductsOrder('create_date', 'dtb_products', 'DESC');
                $colName = 'create_date';
                $tblName = 'dtb_products';
                break;

            // 売価順
            case 'selling_price':
                $objProduct->setProductsOrder('price01', 'dtb_products_class', 'DESC');
                $colName = 'price01';
                $tblName = 'dtb_products_class';
                break;

            // 利益率順
            case 'profit_late':
                $objProduct->setProductsOrder('point_rate', 'dtb_products_class', 'DESC');
                $colName = 'point_rate';
                $tblName = 'dtb_products_class';
                break;

            // 数量順
            case 'quantity':
                $objProduct->setProductsOrder('comment5', 'dtb_products', 'DESC');
                $colName = 'comment5';
                $tblName = 'dtb_products';
                break;

/path/to/data/class/pages/products/LC_Page_Products_List.phpに追記すればいいのはわかりますが、どうやって昇順降順を分けていいのかがわからず困っています。
どなたかよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる