質問 > フロント機能 > 特定カテゴリだけ在庫なしの物を表示 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
koba2017 |
投稿日時: 2017/9/6 16:13
対応状況: 解決済
|
半人前 登録日: 2017/9/5 居住地: 投稿: 11 |
特定カテゴリだけ在庫なしの物を表示 お世話になります。初めて投稿します。
商品の「在庫なし」の物は非表示にしているのですが、 特定のカテゴリの場合だけ「在庫なし」の物も表示にしたいと思っていますが可能でしょうか? このあたりで何か設定すればいいのかと思うのですが src/Eccube/Doctrine/Filter/NoStockHiddenFilter.php ここだと現在のカテゴリを参照するのが困難のようですし src/Eccube/Repository/ProductRepository.php こちらだと在庫ありなしの設定が出来なさそうなので… お分かりの方がいましたら、よろしくお願いします。 ▼テンプレート [EC-CUBE]3.0.14 [レンタルサーバ]ロリポップ [OS]Linux [PHP]5.6.21 [データベース]MySQL 5.6.23 [WEBサーバ]Apache [ブラウザ]GooglrChrome |
468 |
投稿日時: 2017/9/7 17:14
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 特定カテゴリだけ在庫なしの物を表示 特定のカテゴリというのは、検索条件では無くて、
そのカテゴリに属している商品という意味ですか? 一旦、在庫無し商品の非表示設定を表示に変えて、 特定のカテゴリ以外は、在庫商品を判定するようにしてみては如何でしょうか? src/Eccube/Repository/ProductRepository.phpのソースで カテゴリを判定し、在庫判定を行う事はできるとは思います。
|
koba2017 |
投稿日時: 2017/9/12 10:11
対応状況: 確認中
|
半人前 登録日: 2017/9/5 居住地: 投稿: 11 |
Re: 特定カテゴリだけ在庫なしの物を表示 ご相談ありがとうございます!
ご指定の通り、この部分で分岐を入れたら動きそうでした。 シッカリ入れ込み終わったら 後学のためにも詳細をUPさせていただきます。 ありがとうございました。 追伸:御社のプラグイン「新着表示」を使わせていただいております! 便利でわかりやすく大変重宝しております。 ありがとうございます。 |
koba2017 |
投稿日時: 2017/9/12 11:30
対応状況: 解決済
|
半人前 登録日: 2017/9/5 居住地: 投稿: 11 |
解決しましたのでまとめです ありがとうございました。
解決しました 参考までに詳細を書いておきます。 【やりたかったこと】 「販売済み」カテゴリを作って在庫の無い物はそちらでギャラリーとして一覧表示したかった 「花の絵(カテゴリID=5)」「販売済み(カテゴリID=10)」 ・在庫ありの商品 カテゴリID=5…「花の絵」一覧で表示 ・在庫なしの商品 カテゴリID=5,10…「花の絵」一覧で非表示・「販売済み」で表示 1.管理画面から「設定」「基本情報」「ショップマスター」で 「在庫切れ商品を非表示にする」⇒「無効」 (こうしないと、商品も表示されません) 2.src/Eccube/Repository/ProductRepository.php 107行あたりに分岐の追加 // category $categoryJoin = false; if (!empty($searchData['category_id']) && $searchData['category_id']) { $Categories = $searchData['category_id']->getSelfAndDescendants(); if ($Categories) { $qb ->innerJoin('p.ProductCategories', 'pct') ->innerJoin('pct.Category', 'c') ->andWhere($qb->expr()->in('pct.Category', ':Categories')) ->setParameter('Categories', $Categories); $categoryJoin = true; //----------------------- // 「販売済み」系カテゴリ以外では完売商品を表示させない $cat_id = $_GET['category_id']; if($cat_id == '10'){ $qb->andWhere('pc.stock = 0'); }else{ $qb->andWhere('pc.stock = 1'); } //----------------------- } } |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |