PcSchool.Club

パソコンを分かりやすく解説することを目指す無料のオンラインパソコン教室

岐阜のパソコン教室「パソコンスクール・テルン」

EC-CUBE、商品一覧ページで新しい並び替え条件を追加する

2021年5月28日

EC-CUBEのデフォルトでは、一覧ページの並び替えの種類は

・価格順

・新着順

のふたつです。

 

今回はこれら以外の条件を増やしてみたいと思います。

 

名称未設定-1

 

 

 

これら以外の条件を増やす方法は以下の通りです。

今回は新たにカリキュラム順という新しい条件を増やしてみましょう。

 

この機能を実装するのに編集するファイルはふたつ。

list.tpl(data/Smarty/templates/default/products/list.tpl)と

LC_Page_Products_List.php(data/class/pages/products/LC_Page_Products_List.php)。

 

まず、list.tplの

 

<div class="change">
                <!--{if $orderby != 'price'}-->
                    <a href="javascript:fnChangeOrderby('price');">価格順</a>
                <!--{else}-->
                    <strong>価格順</strong>
                <!--{/if}--> 
                <!--{if $orderby != "date"}-->
                        <a href="javascript:fnChangeOrderby('date');">新着</a>
                <!--{else}-->
                    <strong>新着順</strong>
                <!--{/if}-->


この部分に新たに追加したい項目を以下のように追加します。


<div class="change">
                <!--{if $orderby != 'price'}-->
                    <a href="javascript:fnChangeOrderby('price');">価格順</a>
                <!--{else}-->
                    <strong>価格順</strong>
                <!--{/if}--> 
                <!--{if $orderby != 'curriculum'}-->
                    <a href="javascript:fnChangeOrderby('curriculum');">カリキュラム順</a>
                <!--{else}-->
                    <strong>カリキュラム順</strong>
                <!--{/if}--> 
                <!--{if $orderby != "date"}-->
                        <a href="javascript:fnChangeOrderby('date');">新着</a>
                <!--{else}-->
                    <strong>新着順</strong>
                <!--{/if}-->


続いて、LC_Page_Products_List.phpの


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


この部分に


switch ($this->orderby) {
    // 販売価格が安い順
    case 'price':
    $objProduct->setProductsOrder('price02', 'dtb_products_class', 'ASC');
    break;
    // カリキュラム順
    case 'curriculum':
    $objProduct->setProductsOrder('curriculum_no', 'dtb_products', 'ASC');
    break;
    ・
    ・
    ・
    ・

法則としては、
setProductsOrder('ソートするカラム名', 'テーブル名', '昇順か降順か(ASCかDESCか)');
これで、並び替えの項目が一つ増えます。

ただし注意するポイントとしては、
並び替えるテーブルが、product_idを持っているということ。


関連サイト

パソコン教室

パソコンスクール・テルン岐阜・穂積・大垣教室 楽しく学ぶ・通うパソコン教室あもる

パソコン修理・販売・買取・サポート

パソコンの修理・販売・買取・サポート