Go1000
1
全商品のタグの中から、タグをいくつかピックアップして、それを一覧にして表示させたいのですが、うまく行きません。過去スレッドやネットなどいくつか参考にさせていただいて、タグを表示させられるところまではできたのですが、タグ名を入れている箇所を複数個に変更して入れると、うまく表示されません。複数ではなく1個だけだと表示されます。表示されたのが下記に添付しているコードです。
「{% if tag contains ‘AAA’ %}」の箇所を、「{% if tag contains ‘AAA’ or tag contains ‘BBB’ or tag contains ‘CCC’ %}」のように表示を増やせばよいのかと思い試みたのですが、ダメでした。
「含む」ではなく「一致する」タグ名を複数個ピックアップする場合は、そもそも「if」や「contains」を使わないのでしょうか。
どうすれば表示されるかご教示いただきたく。
よろしくお願い致します。
{% assign tag_list = "" %}
{% for product in collections.all.products %}
{% for tag in product.tags %}
{% if tag contains 'AAA' %}
{% assign tag_list = tag_list | append: "," | append: tag %}
{% endif %}
{% endfor %}
{% endfor %}
{% assign tag_list = tag_list | remove_first: "," %}
{% assign tag_array = tag_list | split: "," | uniq %}
##
{{ section.settings.title | escape }}
{% for tag in tag_array %}
- #{{ tag }}
{% endfor %}
記載されている or で繋ぐ方法は動くと思いますので、各段階で値を確認することをお勧めします。
他方、以下のように少ない行数で書くこともできるかなと思います。
{% for tag in collections.all.tags %}
{% if tag == 'tag_a' or tag == 'tag_b' or tag == 'tag_c' %}
{{ tag }}
{% endif %}
{% endfor %}
参考:
https://shopify.dev/docs/api/liquid/objects/collection#collection-tags
@Go1000
初めまして。新垣です。
Liquidの記述にミスは見当たりませんし、私のテストストアでは下記いずれの記述でも複数個表示されます。
{% if tag == 'Winter' or tag == 'Sport' %}
{% if tag contains 'Winter' or tag contains 'Sport' %}
なので、表示したい該当タグの記述ミスや、CSSおよびコード記述箇所での要素崩れ等を確認すると良いかと思います。
以上、参考になりましたら幸いです。
1 Like
Go1000
4
早々にご確認いただきありがとうございます。
先にお伝えすると、解決しました!ありがとうございます。
Liquidの記述にミスがないとお聞きし、まずとても安心しました。
なので、他がダメなのだと、色々調べました。
タグ全表示のコードに書き換えてみると、全タグが表示されず一部のタグしか表示されていないことが分かりました。
そこで、全て表示されないことを改めてネットで検索したら、タグが多すぎると表示されないことが分かりました…。
ネットに下記のように記載するとよいと書かれているのを参考にさせていただきました。
Shopify 商品が全部表示されないとき|まる (note.com)
{% paginate collections.all.products by 1000 %}
{% for product in collections.all.products %}
・・・
{% endfor %}
{% endpaginate %}
by 1000のように記載すれば良いとのことで、解決しました!
こちらに加えて、教えていただいた下記コードで記述すると、後程見やすいので、こちらで表示したいタグを追加していこうと思います。
{% if tag == 'Winter' or tag == 'Sport' %}
ありがとうございました。