# 商品タグが含まれているかいないかで条件分岐をする方法をご教示ください

**URL:** <https://community.shopify.com/t/topic/51290>\
**Category:** 技術的なQ＆A\
**Created:** [June 29, 2021, 6:14am UTC](https://community.shopify.com/t/topic/51290 "2021-06-29T06:14:12Z")\
**Posts on this page:** 3\
**Page:** 1

## AI-generated summary

商品タグの有無で配送日時デイトピッカーの表示を切り替える Liquid 条件分岐がテーマです。Line Item Property を使い、販売元・特定タグ・その他で表示内容を分けたいが、タグを外して保存しても非表示のまま戻らない問題が報告されました。

原因として指摘されたのは、`{% for tag in product.tags %}` の中で `if` を回していた点です。これだと商品に付いているタグ数だけ判定が繰り返され、`配送日時非表示` タグがない場合でも意図しない表示や重複表示が起こり得ます。

提案された修正は、ループを使わず `product.tags contains '配送日時非表示'` で直接判定する方法です。あわせて、`vendor` 判定を `elsif` に置く形に整理されました。

結果として、タグの追加・解除に応じて表示・非表示が正常に切り替わることを確認。質問者が解決済みと報告しており、議論は収束しています。

<div class="post-metadata">

**Author:** ![GOENINC](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/goeninc/32/117281_2.png) [@GOENINC](https://community.shopify.com/u/GOENINC)\
**Post date:** [June 29, 2021, 6:14am UTC](https://community.shopify.com/t/topic/51290/1 "2021-06-29T06:14:12Z")

</div>

いつもお世話になっております。

Line Item Property を使用して、  
配送日時希望のデイトピッカーをテーマに設定しました。  
（使用テーマはDEBUTです。）

参考：  
[https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-customer-note](https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-customer-note)

・特定の販売元に該当する商品の時  
・配送日時非表示のタグを付けた商品  
・それ以外

で条件分岐を書きました。

タグを設置した時には意図通り動作したのですが、

一度、タグを付けて保存した商品に対して、

再びタグを解除して保存しても、もとに戻らない（タグがついているときと同じ結果になる）という症状に悩まされています。

ブラウザのキャッシュを削除するなども試してみたのですが改善しません。

記述したコードは以下です。

```ruby
{% for tag in product.tags %}
{% if product.vendor == '任意の販売元' %}

任意の販売元を選択した時は、配送日時デイトピッカーパターン１を表示

{% elsif tag contains '配送日時非表示' %}

「配送日時非表示」というタグがついている場合、何も表示しない

{% else %}

配送日時デイトピッカーパターン2を表示

{% endif %}
{% endfor %}

```

どのようにすればタグのアリ・ナシで条件分岐できるかご教示いただけないでしょうか。どうぞよろしくおねがいします。

---

<div class="post-metadata">

**Author:** ![Jizo\_Inagaki](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/jizo_inagaki/32/149480_2.png) [@Jizo\_Inagaki](https://community.shopify.com/u/Jizo_Inagaki)\
**Post date:** [July 4, 2021, 2:12pm UTC](https://community.shopify.com/t/topic/51290/2 "2021-07-04T14:12:52Z")

</div>

> 再びタグを解除して保存しても、もとに戻らない（タグがついているときと同じ結果になる）

上記の理由はわかりかねますが、シークレットモードの利用やブラウザを変更するなども試されることをお勧めします。

他方、この部分に対する他のコードの影響が不明なので明確にはわかりませんが、分岐の作り方には問題があるように思います。

おそらく以下のようになるのではと考えられるためです。

- 商品に付けられたtagの数だけif文が繰り返される
- 「配送日時非表示」のタグが付いていない場合、デイトピッカーパターン１か2が複数個表示される

そのため以下のように変更する方が良いかもしれません。

```markup
{% if product.tags contains '配送日時非表示' %}
  「配送日時非表示」というタグがついている場合、何も表示しない
{% elsif product.vendor == '任意の販売元' %}
  任意の販売元を選択した時は、配送日時デイトピッカーパターン１を表示
{% else %}
  配送日時デイトピッカーパターン2を表示
{% endif %}

```

非表示用の分岐を初回に持ってくるのは微妙ではありますが、他の方法では効率が悪そうだったり結局似た感じになりそうに思えましたのでこの状態にしています。

以上です。

「タグを設置した時には意図通り動作した」と書かれていますので不要か間違った回答かもしれず、その際は申し訳ありません。

---

<div class="post-metadata">

**Author:** ![GOENINC](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/goeninc/32/117281_2.png) [@GOENINC](https://community.shopify.com/u/GOENINC)\
**Post date:** [July 7, 2021, 4:25am UTC](https://community.shopify.com/t/topic/51290/3 "2021-07-07T04:25:10Z")

</div>

Jizo\_Inagaki様

いつもご指導ありがとうございます。

上記のご提案とアドバイスで完全に意図通り動きました。

確かに、私のコードですとfor tagでif分が繰り返される形になるのでこれが原因だったのかもしれません。

Jizo様ご提案の方法でコードを修正したところ、タグの追加・解除で意図通りに表示・非表示の動作が行われました。

ありがとうございます。  
これからも活用していきたいと思います。

今後ともどうぞよろしくおねがいします。
