質問 > フロント機能 > 売切れ商品を非表示、もしくは「売切れ」と表示 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
katsuo77 |
投稿日時: 2017/11/24 15:45
対応状況: −−−
|
半人前 登録日: 2017/10/14 居住地: 投稿: 12 |
売切れ商品を非表示、もしくは「売切れ」と表示 ▼テンプレート
[EC-CUBE] 3.0.15 新規インストール [レンタルサーバ] さくら vps [OS] CentOS 6.9 [PHP] 7.0.21 [データベース] MySQL 5.6.36 お世話になっております。 タイトルの通り商品一覧ページで在庫が0の場合(複数規格がある場合は、すべての規格で在庫0の場合)にその商品を非表示にする、もしくは「売切れ」と表示するようにしたいです。 こちらのフォーラム含め検索しましたが解決策が見つからず、質問させていただきました。 実装のヒントなど教えていただけますとありがたいです。 一応、 /src/Eccube/Resource/template/default/Product/list.twig あたりのファイルでif文を使って実現するのかな、くらいの検討はついているのですが、、 また2.x系では<!--{$arrProducts[cnt].stock_max}-->で在庫数の最大値を呼び出せるようなので、3.x系でも同じようなタグがあれば実装に近づくのかと考えています。 よろしくお願いいたします。 |
katsuo77 |
投稿日時: 2017/11/28 18:32
対応状況: −−−
|
半人前 登録日: 2017/10/14 居住地: 投稿: 12 |
Re: 売切れ商品を非表示、もしくは「売切れ」と表示 質問者です。
質問を投稿してから自分で少し調べたりしてまたお聞きしたい内容が変わったので共有させていただきます。 商品一覧ページ内で在庫のない商品を表示しないようにするために、 /src/Eccube/Resource/template/default/Product/list.twigの<!-- ▼item_list▼ -->内で、 {% for Product in pagination %} を使って在庫のある商品のみを表示することで、なんとなく希望の動作を実現することはできました。 しかしこの場合、検索結果の件数表示(「○件の商品が見つかりました。」)が在庫なし商品も含めた数になってしまったり、1ページに表示される商品数がまちまちになってしまったり(つまり、1ページ15件表示だとしてそのうち5件が在庫なしの場合、画面上には10件しか表示されない)といった新たな問題が発生してしまいました。 これらを解決するにはそもそもの検索ロジックを修正すれば良いのかと思い、 /src/Eccube/Repository/ProductRepository.php内のgetQueryBuilderBySearchData() をいじろうとはしているのですが、検索条件に「在庫のある商品のみ検索」といった条件追加は可能なのでしょうか? 少し文章がわかりづらいかもしれませんが、お力をお貸しいただけると幸いです。 よろしくお願いいたしますm(_ _)m |
katsuo77 |
投稿日時: 2017/11/28 19:25
対応状況: 解決済
|
半人前 登録日: 2017/10/14 居住地: 投稿: 12 |
Re: 売切れ商品を非表示、もしくは「売切れ」と表示 続けて失礼します。質問者です。
こちらの問題解決いたしました。 /src/Eccube/Repository/ProductRepository.phpのgetQueryBuilderBySearchData()内で、 $qb->innerJoin('p.ProductClasses', 'pc'); $qb->andWhere('pc.stock >= 1'); と追記することで希望の挙動を実現できました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |