そもそも必要かどうかわかりませんが
「登録した日付順にしたい」
という要望がでましたので備忘録。
本来の趣旨
「順番のデフォルト」を変えるということ。
元々は登録ID降順で表示されているのですが、IDを管理画面とかから修正することができないので結局、デフォルトの順番を変えることはできないってことになります。
ここでは「ID降順」ではなく「他の順」で表示させるという修正方法の説明です。
話の矛盾した背景
本来なら「登録降順=ID降順」なので何もしなくてもいいはずなんです。
しかし、運用として他のサイトにUPした商品を週1回10件ずつCSVでUPするということをしているので、下のようなことになってしまうのです。
なので、あえて日付降順にすることにします。
デフォルトの表示順番を修正する方法
/src/Eccube/Repository/ProductRepository.php
の165行目あたりのidソートを直します
■修正前■
} else {
if ($categoryJoin === false) {
$qb
->leftJoin(‘p.ProductCategories’, ‘pct’)
->leftJoin(‘pct.Category’, ‘c’);
}
$qb
->addOrderBy(‘p.id’, ‘DESC’);
}
return $qb;
}
/**
* get query builder.
*
* @param array $searchData
* @return \Doctrine\ORM\QueryBuilder
■修正後■
} else {
if ($categoryJoin === false) {
$qb
->leftJoin(‘p.ProductCategories’, ‘pct’)
->leftJoin(‘pct.Category’, ‘c’);
}
$qb
->addOrderBy(‘p.create_date’, ‘DESC’);
}
return $qb;
}
/**
* get query builder.
*
* @param array $searchData
* @return \Doctrine\ORM\QueryBuilder
ここではcreate_dateで回していますが、
このソースを見ていくと
cc1.rank
p.price02_max
とかもあるので、いろいろな値を入れてカスタマイズすることができそうです。
「->addOrderBy(」とかって簡単にSQLの追加できるのが、ドクトリンのいいところだよなぁ~(^ー^)
ドクトリン?スマーティー?わからんけど。
コメント