EC-CUBE、商品一覧ページで新しい並び替え条件を追加する
2021年5月28日EC-CUBEのデフォルトでは、一覧ページの並び替えの種類は
・価格順
・新着順
のふたつです。
今回はこれら以外の条件を増やしてみたいと思います。

これら以外の条件を増やす方法は以下の通りです。
今回は新たにカリキュラム順という新しい条件を増やしてみましょう。
この機能を実装するのに編集するファイルはふたつ。
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を持っているということ。





