FROM CACHE - jp_header
解決済

コレクションの全ての在庫数を合算して表示したい

g_ouc
Shopify Partner
2 0 0

コレクションページにて、
コレクションに属する商品(全てのバリエーションを含む)の在庫数を合計した値を表示したいです。

{%- for product in collection.products -%}
<div id="variant-inventory">
   {% assign total = 0 %}
    {% for variant in product.variants %}
     {% capture i %}{{ total | plus:variant.inventory_quantity }}{% endcapture %}
      {% assign total = i %}
    {% endfor %}
	{%- if product.available -%}
      残り在庫 {{ total }} 個
	{%- else -%}
      Sold Out
	{%- endif -%}
</div>
{%- endfor -%}


コレクション内の各商品の在庫数を下記のように表示することができました。
残り在庫 7 個
残り在庫 1 個
残り在庫 7 個
Sold Out
残り在庫 3 個
残り在庫 1 個
残り在庫 1 個

実現したいのは、下記のように1行でまとめて表示したいです。

残り在庫 20 個

また、コレクションに1つも在庫がないときにも、下記のように1行だけ表示したいです。
Sold Out

ご存じの方がおられましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。

 

1 件の受理された解決策

Qcoltd
Shopify Partner
1051 431 418

成功

ご質問いただいている、コレクションでの商品合計表示の件ですが、

記載いただいていたコードを調整し、在庫数の合計が表示するよう調整しました。

 

下記調整コード

 

<div id="variant-inventory">
{% assign totals = 0 %}
{%- for product in collection.products -%}
  {% assign total = 0 %}
  {% for variant in product.variants %}
    {% capture i %}{{ total | plus:variant.inventory_quantity }}{% endcapture %}
    {% assign total = i %}
  {% endfor %}
  {% assign totals = totals | plus: total %}
{%- endfor -%}
{% if totals != 0 %}
  残り在庫 {{ totals }} 個
{% else %}
  Sold Out
{% endif %}
</div>

 

 

主な変更点について

  1. 合計用の関数{% assign totals = 0 %}を追加
  2. {% assign totals = totals | plus: total %}{% for variant in product.variants %}の処理で出来た値を加算
  3. {%- for product in collection.products -%}の外で、残り在庫数の分岐処理を追加

ご参考まで。

(キュー小坂)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/

元の投稿で解決策を見る

2件の返信2

Qcoltd
Shopify Partner
1051 431 418

成功

ご質問いただいている、コレクションでの商品合計表示の件ですが、

記載いただいていたコードを調整し、在庫数の合計が表示するよう調整しました。

 

下記調整コード

 

<div id="variant-inventory">
{% assign totals = 0 %}
{%- for product in collection.products -%}
  {% assign total = 0 %}
  {% for variant in product.variants %}
    {% capture i %}{{ total | plus:variant.inventory_quantity }}{% endcapture %}
    {% assign total = i %}
  {% endfor %}
  {% assign totals = totals | plus: total %}
{%- endfor -%}
{% if totals != 0 %}
  残り在庫 {{ totals }} 個
{% else %}
  Sold Out
{% endif %}
</div>

 

 

主な変更点について

  1. 合計用の関数{% assign totals = 0 %}を追加
  2. {% assign totals = totals | plus: total %}{% for variant in product.variants %}の処理で出来た値を加算
  3. {%- for product in collection.products -%}の外で、残り在庫数の分岐処理を追加

ご参考まで。

(キュー小坂)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/
g_ouc
Shopify Partner
2 0 0

キュー小坂様

ご回答いただき、ありがとうございます!

いただいたコードで希望通りの表示ができ、非常に助かりました。
また、変更点など参考になりました。

この度は、ありがとうございました。