ページでの条件分岐

Topic summary

カート内の特定タグ(「hoge」)が付いた商品が2個以上ある場合にチェックボックスを表示する条件分岐の実装方法についての質問。

問題点:

  • cart.item_countでは特定タグの商品数を取得できず、正しく条件分岐できない
  • タグを含む商品が1つでもあればチェックボックスが表示されてしまう

解決方法:

  • Liquidコードでassign tag_count = 0で変数を初期化
  • cart.itemsをループし、item.product.tagsに特定タグが含まれる場合、item.quantitytag_countに加算
  • tag_countが2以上の場合にチェックボックスを表示

同一商品の数量2でもカウントされる仕様で、質問者は無事解決し、assignを使った特定タグの数量取得方法を学習できたとのこと。スレッドは解決済みとしてマークされる予定。

Summarized with AI on November 24. AI used: claude-sonnet-4-5-20250929.

特定のタグが付いた商品が2個以上(同一商品の数量2でも)の時にチェックボックスを表示させたくいろいろと試していますがうまくいきません。

{% for item in cart.items limit:1 %}
{% for tag in item.product.tags %}
{% if tag contains “hoge” %}
{% if cart.item_count > 2 %}
a
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}

上記内容ですとhogeが一つでも含まれているとチェックボックスが出てしまいます。
cart.item_countをカート内のhogeの数が取得できればそちらに変えて条件分岐できないかと思いましたがわかりませんでした。

カート内のhogeの総数を取得できればいけそうな気がしましが何か良い方法がございましたらご教授いただけると助かります。

1 Like

Hdmさん、はじめまして。

Tsunの小笠原と申します。

特定のタグが付いた商品が2個以上(同一商品の数量2でも)の時にチェックボックスを表示

下記の感じでどうでしょうか?

テストしてないので、うまく動かなったから申し訳ないです。

{%- liquid
  assign tag_count = 0

  for item in cart.items
    if item.product.tags contains 'hoge'
      assign tag_count = tag_count | plus: item.quantity
    endif
  endfor

  if tag_count >= 2
    comment
    チェックボックスを表示
    endcomment
  endif
-%}

cart.itemsをループして、product.tags内に特定のタグを含む場合に、tag_countに足しています。

(同一商品でも2つあった場合を許容するということでしたので、商品数分足しています)

以上、よろしくお願いします。

上記内容で無事解決しました!

assignで特定のタグのitem.quantityを持ってくればよかったのですね。

とても勉強になりました。

ありがとうございます。

Hdmさん、無事解決したようでよかったです。

こちらのスレッドを解決済みにしていただくと、今後参照される方のためにもなりますので、よろしくお願いします。