FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

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

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

misen82729
Shopify Partner
6 0 1

商品には複数のコレクションが登録してあり、その複数の中に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つだけ表示したい場合は、どのように書くのが正しいでしょうか。

よろしくお願いいたします。

3件の返信3

株式会社フルバランス
Shopify Partner
1623 576 750

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 %}

 ご参考までに。

 

フルバランス 園畑

株式会社フルバランス
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『つくる人、売る人の成長と成功を最大化する。』 株式会社フルバランス
misen82729
Shopify Partner
6 0 1

株式会社フルバランス 園畑様

 

ご回答いただきありがとうございます。ご教示いただいたコードにて試してみたのですが、登録コレクションに関わらず、全ての商品ページで「hideButton = true」の状態としてボタンが非表示の状態になってしまいました。trueをfalseに変えると表示は変わるのですが、常に全商品同じ表示になります。

URLで試しても同じ状態だったので、コレクションをうまく取得できていないのでしょうか。。

 

misen82729
Shopify Partner
6 0 1

コレクションを確認していたところ、コレクションA, B, Cを自動でまとめるコレクションDがあり、hundleではなくtitleで

 

collection.title == 'コレクションD'

 

とすると思い通りの表示になりました (hundleの時はきちんとURLのハンドルを入れていました)

なぜかhundleでは反応せず、titleだとOKでした。

titleも'A' or 'B' or 'C'では全商品が対象になっていたので、今回のtitleでなぜうまくいったのかがわからないのですが、おかげさまで無事に解決しました🙏

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