質問 > フロント機能 > 在庫がなくなったら「在庫なし」と表示したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
konohaito |
投稿日時: 2022/4/26 10:39
対応状況: −−−
|
一人前 登録日: 2019/9/5 居住地: 投稿: 96 |
在庫がなくなったら「在庫なし」と表示したい [EC-CUBE] EC-CUBEのバージョン4、新規インストール
[レンタルサーバ] エックスサーバー [OS] MAC [ブラウザ] Chrome [導入プラグインの有無] ショッピングモール 他 [カスタマイズの有無] 決済関係STRIPE [現象] プログラムがわからなくて恐縮なのですが、下記の記述方法をおしえていただけますでしょうか? ★シンプルに「商品の在庫が0になったときだけ、「在庫なし」と表示したい」 (無制限に設定してある商品については特に何もしない) 下記をどうアレンジしたらよいでしょうか? {% if Product.StockMax <= 5 %} <div class="ec-color-red ec-font-size-3">(在庫僅か)</div> {% elseif Product.StockMax == 0 %} <div class="ec-color-red ec-font-size-3">(在庫なし)</div> {% else %} <div class="ec-color-red ec-font-size-3">(在庫あり)</div> {% endif %} **************************(下記のように書くと「無制限」のものが「在庫なし」とでてしまいます。 {% if Product.StockMax == 0 %} <div class="ec-color-red ec-font-size-3">(在庫なし)</div> {% endif %} ************************** ご教授いただきたくよろしくお願いいたします。 |
yt1969 |
投稿日時: 2022/4/26 14:36
対応状況: −−−
|
一人前 登録日: 2018/3/3 居住地: 投稿: 91 |
Re: 在庫がなくなったら「在庫なし」と表示したい
|
konohaito |
投稿日時: 2022/4/26 17:28
対応状況: −−−
|
一人前 登録日: 2019/9/5 居住地: 投稿: 96 |
Re: 在庫がなくなったら「在庫なし」と表示したい メッセージありがとうございます。
無制限の場合は、メッセージをださないようにするためにはどのように記述したらよいでしょうか? |
yt1969 |
投稿日時: 2022/4/26 21:48
対応状況: −−−
|
一人前 登録日: 2018/3/3 居住地: 投稿: 91 |
Re: 在庫がなくなったら「在庫なし」と表示したい
|
konohaito |
投稿日時: 2022/5/2 10:46
対応状況: −−−
|
一人前 登録日: 2019/9/5 居住地: 投稿: 96 |
Re: 在庫がなくなったら「在庫なし」と表示したい コメントありがとうございます。
リンク先を参照し、下記のコードを設定し、無事に「無制限」となっているものも「在庫:あり」と表示することができました。 が、「規格」を設定してある商品については、規格が設定された数だけ「在庫:あり」が何行も表示されてしまいます。 こちらを 規格名ごとに、在庫:あり・なしなど表示するにはどうしたらよいでしょうか? ****************************************** 規格ごとに設定 「Product.StockMaxはその商品の規格のなかで最大の在庫数なので 規格ごとに在庫を表示したいのであれば、テンプレート上でProduct.ProductClassesをfor文でループさせるなどの工夫が必要になってきます。」 ****************************************** とのことなのですが、コードがわからず困っております。 下記のコードに、どのように書き加えたらよいでしょうか? ご教授いただきたく、よろしくお願いします。 【現在のコード】****************************************** {% for ProductClass in Product.ProductClasses %} {% if Product.StockUnlimitedMax %} {#在庫無制限の場合 #} <div class="ec-font-size-3 detail_stock">在庫:<span class="ec-color-red">あり</span></div> {% elseif Product.StockMax == 0 %} {#在庫0の場合 #} <div class="ec-font-size-3 detail_stock">在庫: <span class="ec-color-red">在庫切れ</span></div> <p class="detail_note">※在庫・納期をお問い合わせください</p> {% else %} {#在庫あり の場合 #} <div class="ec-font-size-3 detail_stock">在庫: <span class="ec-color-red">あり</span> </div> {% endif %} {% endfor %} ****************************************** |
yt1969 |
投稿日時: 2022/5/2 22:19
対応状況: −−−
|
一人前 登録日: 2018/3/3 居住地: 投稿: 91 |
Re: 在庫がなくなったら「在庫なし」と表示したい Productに紐づくProductClass群(= Product.ProductClasses)
そのうちのProductClass1つ1つについて(for ProductClass in Product.ProductClasses) という繰り返しの中なので、 親のProductのStockMaxではなく個々のProductClassのstockを見るべきかと。 例えば1つのProductにProductClassが3つありstockはそれぞれ0,1,2とすると、 Product単位で見たStockMaxはProductClass中のstock最大値なので2。 なので上記コードではProductClass1つ1つについてProduct単位のStockMax値2で判定しまうために「在庫:あり」「在庫:あり」「在庫:あり」となっているのだと思います。 ちなみに、ProductやProductClassのプロパティ値はここをご参考に。 src/Eccube/Entity/Product.php src/Eccube/Entity/ProductClass.php |
konohaito |
投稿日時: 2022/5/6 12:10
対応状況: −−−
|
一人前 登録日: 2019/9/5 居住地: 投稿: 96 |
Re: 在庫がなくなったら「在庫なし」と表示したい コメントアドバイスありがとうございます。
最終的に「在庫なし」のときだけ「在庫なし」と表示するという最初のパターンでいく場合、参考サイトを見て 下記のように記述しました。 <div id="result_list__stock--{{ Product.id }}" class="item_detail td"> {% set displayed = false %} {% for ProductClass in Product.ProductClasses %} {% if not displayed and ProductClass.StockFind == false %} <span class="text-danger">在庫なし</span> {% set displayed = true %} {% endif %} {% endfor %} 理想形は、在庫なしの商品(規格設定ありのものも含む)があった場合、 「規格の分類名:在庫なし」と表示できればと思うのですが、分類名はどのように出力すればよいでしょうか? 分類についての情報が探しきれずにいます。 ご教授いただけると幸いです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |