特定コレクションでボタンの表示 / 非表示をしたい (商品には複数コレクションが登録済み)

商品には複数のコレクションが登録してあり、その複数の中に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でなぜうまくいったのかがわからないのですが、おかげさまで無事に解決しました :folded_hands:

ありがとうございました。