【EC-CUBE】商品一覧の表示順(昇順・降順)の変更・追加

商品一覧ページの一覧上下に表示されているソートリンクを追加(または変更)して、降順・昇順の並べ替えボタンを作ることができる。

例えば、
「価格:高い順 安い順 新しい順 古い順
に並べ替えというようなことが可能。

1)/data/class/pages/products/LC_Page_Products_List.php を編集。

        //表示順序
        switch($orderby) {

という記述を探します。(Ver.2.3RC1の場合、L387あたり。)

その下の、

「case ‘ ○○ ‘:」

という部分が、それぞれのソートのルールを決めている部分。

この中の、「$order =” ○○ “;」というところがソートの指定。ここに、ソートに使用したい項目を入れる。優先順も。降順にしたい場合は、項目の後に半角スペースを入れて、「disc」と記述。

仮に、価格降順(高いほうから安いほうへ)のソートルールを作るのであれば、

        case ‘price’:
            $col = “DISTINCT price02_min, product_id, product_code_min, product_code_max,”
                . ” name, comment1, comment2, comment3,”
                . ” main_list_comment, main_image, main_list_image,”
                . ” price01_min, price01_max, price02_max,”
                . ” stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,”
                . ” point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,”
                . ” status, product_flag, create_date, del_flg”;
            $from = “vw_products_allclass AS T1”;
            $order = “price02_min, product_id”;
            break;

をコピーして、「case ‘price2’:」などとして、「$order = “price02_min, product_id”;」→「$order = “price02_min disc, product_id”;」とすればよい。

2)/data/Smarty/templates/default/list.tpl テンプレートにソーとリンクを追加表示させる。

L69行目以下の適当な場所/L188行目以下の適当な場所に表示リンクを追加(または修正)する。

先の例で、価格降順のリンクを追加する場合としたら、

<!–{if $orderby != ‘price2‘}–>
        <a href=”javascript:fnModeSubmit(”, ‘orderby’, ‘price2‘)”>価格順</a>
    <!–{else}–>
        <strong>価格順</strong>
    <!–{/if}–>&nbsp;

こういう形のコードを追加し、「価格順」という文字を「価格昇順」と変更すれば、価格のソートは、高いほうからも安いほうからも並べ替えできるようになる。