PcSchool.Club

パソコンを分かりやすく解説することを目指す無料のスキルアップサイトです

EC-CUBE3 商品一覧(list.twing)を五十音順に並べ替える

2017年8月13日

商品一覧では、もともと、価格の低い順と高い順、新着順がありますが、
これに五十音順を追加してみます。

1.
まずは、データベースのmtb_product_list_order_byテーブルにて、並べ替えの項目を追加します。
1

ここでは五十音順を追加してみました。

2.
つづけて、定数を追加します。src/Eccube/Resource/config内にある
constant.yml.dat
ファイルを開き、
一番下に定数を追加します。

product_order_price_lower: 1
product_order_newer: 2
product_order_price_higher: 3
product_order_namesorter: 4   ←ここに追加しました

定数の名前は適当に、product_order_namesorterとしましたが、好きな名前を付けてあげてください。4は、データベースに追加した、idと同じになるようにします。

3.
次に、src/Eccube/Repository内にある、
ProductRepository.php
を開きます。

並び替えの記述があると思いますので、
以下のように、記述を追加しましました。

else if (!empty($searchData[‘orderby’]) && $searchData[‘orderby’]->getId() == $config[‘product_order_namesorter’]) {
//五十音順に並び変える
$qb->addSelect(‘MAX(pc.price02) as HIDDEN price02_min’);
$qb->innerJoin(‘p.ProductClasses’, ‘pc’);
$qb->groupBy(‘p’);
$qb->addOrderBy(‘p.name’, ‘ASC’);
}

 

上記で並び替えのカスタマイズは終わりですが
これだと実際は商品名が漢字だった場合にうまく並べ変わりません。
そうすると、やはりdtb_productにふりがなのフィールドを追加して、それをもとに並び変えるようにする必要がありますね。