基本にある条件に、除外する条件を追加する場合の記述について

Topic summary

問題の概要:
在庫数に応じて3パターンの文言を表示するコードがあり、特定のタグが付いた商品については在庫表示を非表示にしたいという要望。商品グリッドでの実装を希望。

解決プロセス:

  • Takase_Rがinventory_hiddenフラグを使用した条件分岐のコード例を提示
  • 商品タグに特定のラベルが含まれる場合にtrueを設定し、在庫表示をスキップする仕組み

追加の課題と解決:
質問者が複数タグ対応のためor演算子を使用したところ、全商品が非表示になる問題が発生。

原因は条件式の記述方法:

  • 誤: {% if tag contains 'label-1' or 'label-2' %}
  • 正: {% if tag contains 'label-1' or tag contains 'label-2' %}

Takase_Rの修正案により、2つのタグに正常に適用され解決。elsifを使った記述方法も基本的には問題ないが、やや冗長になるとの補足あり。

結果: 質問者の希望通りの表示が実現し、解決済み。

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

Takase 様

返信、誠にありがとうございます。

ご教授頂きました、コードでイメージ通りの表示になりました!

因みになりますが、特定のタグが複数あるので、下のように”or”を使用したのですが、

特定のタグ以外の全ての商品が非表示なりました。

{% assign inventory_hidden = false %}

{% for tag in product.tags %}
  {% if tag contains 'label-1' or 'label-2' %}
    {% assign inventory_hidden = true %}
  {% endif %}
{% endfor %}

下記のように"elsif"にしたら、正常に2つのタグだけ非表示なりました。

これについて、何かお判りになりますか?

{% assign inventory_hidden = false %}

{% for tag in product.tags %}
  {% if tag contains 'label-1' %}
    {% assign inventory_hidden = true %}
  {% if tag contains 'label-2' %}
    {% assign inventory_hidden = true %}
  {% endif %}
{% endfor %}

追加で、大変恐縮ではございますが宜しければご教授お願い致します。