質問 > フロント機能 > 商品検索対象に「規格」を追加したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tsubasa |
投稿日時: 2017/5/25 5:05
対応状況: 確認中
|
新米 登録日: 2017/5/25 居住地: 投稿: 1 |
商品検索対象に「規格」を追加したい [EC-CUBE] 3.0.14
商品検索ブロックからキーワードを入力して検索する際、 検索の対象となるのは「商品名」と「検索ワード」のみなので、 新しく「規格」も検索対象にしようと試みましたが手詰まりです。 src/Eccube/Repository/ProductRepository.php内の getQueryBuilderBySearchDataで検索条件を追加することは予想できています。 どうか、助けて下さい。 【getQueryBuilderBySearchData内】 if (isset($searchData['name']) && Str::isNotBlank($searchData['name'])) { $keywords = preg_split('/[\s ]+/u', $searchData['name'], -1, PREG_SPLIT_NO_EMPTY); foreach ($keywords as $index => $keyword) { $key = sprintf('keyword%s', $index); $qb ->andWhere(sprintf ('p.name LIKE :%s OR p.search_word LIKE :%s', $key, $key)) ->setParameter($key, '%' . $keyword . '%'); } } |
hata |
投稿日時: 2017/5/25 14:10
対応状況: −−−
|
長老 登録日: 2015/8/3 居住地: 宮城県(2017/09末引退) 投稿: 156 |
Re: 商品検索対象に「規格」を追加したい tsubasaさん
dtb_class_categoryのnameでいいですか? #dtb_class_nameのnameではないですよね? まずは前提としてdtb_product_classが無いとdtb_class_categoryと紐付けられないので、 $qb->innerJoin('p.ProductClasses', 'pc');が必要です。 ただ、価格順に並べ替えるケースで上記のinnerJoinが行われているので二重にやらないように 配慮が必要です。 そこで、returnする直前に今回のカスタマイズを実装するなら、以下のようにinnerJoin されていない場合にだけやる方法と、 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=19052&forum=17&post_id=82219 常にJoinしても良いなら、価格順のところのinnerJoinを削り、もっと上のレギュラーパスへ処理を 追加する方法があると思います。 お好みに合わせてどうぞ。 次にdtb_class_categoryですが、規格1と規格2がありますので以下を上記innerJoinの後に 追加してください。 $qb->leftJoin('pc.ClassCategory1', 'cc1'); $qb->leftJoin('pc.ClassCategory2', 'cc2'); あとはforeachのandWhereにcc1.nameとcc2.nameの分を追加してやればできると思います。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |