FROM CACHE - jp_header
解決済

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

GOENINC
Shopify Partner
41 4 10

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


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

参考:
https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-custo...


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

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


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

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

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


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


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

 

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


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


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


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


{% else %}

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

{% endif %}
{% endfor %}

 

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

1 件の受理された解決策

Jizo_Inagaki
Shopify Partner
989 373 690

成功

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

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

 

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

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

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

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

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

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

 

以上です。

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

 

Jizo_Inagaki | フリーランスのwebデザイナー
- テーマのカスタム承れます。
- 記載した回答で解決できましたらベストソリューションの承認をお願いします。
- DMや指名による対応はご依頼として有料でのみ承ります。

元の投稿で解決策を見る

2件の返信2

Jizo_Inagaki
Shopify Partner
989 373 690

成功

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

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

 

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

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

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

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

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

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

 

以上です。

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

 

Jizo_Inagaki | フリーランスのwebデザイナー
- テーマのカスタム承れます。
- 記載した回答で解決できましたらベストソリューションの承認をお願いします。
- DMや指名による対応はご依頼として有料でのみ承ります。
GOENINC
Shopify Partner
41 4 10

Jizo_Inagaki様

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

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

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

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

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

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