Shopify テーマ、Liquid、ロゴ、その他の類似トピック
商品には複数のコレクションが登録してあり、その複数の中に1つでも条件に合うコレクションが含まれていればボタンを表示、または非表示にしたいと思っています。
最初は
{% for collection in product.collections %}
を使ってif文で
{% if collection.handle == 'コレクションA' or 'コレクションB' or 'コレクションC' %} ボタン非表示 {% else %} ボタン表示 {% endif %}
(そのコレクション名が含まれていないコレクションの商品だけボタンを表示させたかった)
で書いていたのですが、複数のコレクションに登録しているため、登録しているコレクション分ボタンが表示されてしまい(4個とか5個とか)、for文で書くのではなくURLで条件分岐しようとしました。
{% if request.path contains '/collections/コレクションA' or '/collections/コレクションB' or '/コレクションC' %} ボタン非表示の時のコード(空ではなくボタンではないコードが入ります) {% else % } ボタン表示の時のコード {% endif %}
上記だとすべての商品ページでボタン非表示の時のコードとなります
それ以外のところで、そのコレクションに含まれていないページだけ表示させたいものがあったので
{% unless request.path contains '/collections/コレクションA' or '/collections/コレクションB' or '/コレクションC' %} 表示させたいもの {% endunless %}
としたのですが、どのURLでも表示されません。
複数登録しているコレクションの中にA, B, Cのいずれかが入っている場合でボタンを非表示にする場合、それ以外のコレクションではボタン1つだけ表示したい場合は、どのように書くのが正しいでしょうか。
よろしくお願いいたします。
Aika827様
ご質問を確認しました。
いただいた質問の想定通りかはわかりかねますが、
下記コードの形でボタン表示、非表示を決められるのはいかがでしょうか?
{% assign hideButton = false %}<!-- 最初はボタン表示する想定 -->
{% for collection in product.collections %}
{% if collection.handle == 'コレクションA' or 'コレクションB' or 'コレクションC' %}
{% assign hideButton = true %}
{% endif %}
{% endfor %}
{% if hideButton == true %} <!-- 一つでもボタンを非表示にしたいコレクションが含まれていたら -->
ボタン非表示
{% else %}
ボタン表示
{% endif %}
ご参考までに。
フルバランス 園畑
株式会社フルバランス 園畑様
ご回答いただきありがとうございます。ご教示いただいたコードにて試してみたのですが、登録コレクションに関わらず、全ての商品ページで「hideButton = true」の状態としてボタンが非表示の状態になってしまいました。trueをfalseに変えると表示は変わるのですが、常に全商品同じ表示になります。
URLで試しても同じ状態だったので、コレクションをうまく取得できていないのでしょうか。。
コレクションを確認していたところ、コレクションA, B, Cを自動でまとめるコレクションDがあり、hundleではなくtitleで
collection.title == 'コレクションD'
とすると思い通りの表示になりました (hundleの時はきちんとURLのハンドルを入れていました)
なぜかhundleでは反応せず、titleだとOKでした。
titleも'A' or 'B' or 'C'では全商品が対象になっていたので、今回のtitleでなぜうまくいったのかがわからないのですが、おかげさまで無事に解決しました🙏
ありがとうございました。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024