ピックアップした複数のタグを、一覧にして表示させたい

Topic summary

問題の内容:
複数のタグをピックアップして一覧表示しようとしたが、うまく表示されない。1個のタグだけなら表示されるが、{% if tag contains 'AAA' or tag contains 'BBB' or tag contains 'CCC' %}のように複数に増やすと動作しない。

回答と解決策:

  • Jizo_Inagakiは、orで繋ぐ方法は動作するはずなので、各段階で値を確認することを推奨。==を使った簡潔な記述例も提示。
  • NIIGAKI_HYUGAは、Liquidの記述にミスは見当たらず、テストストアでは正常に動作すると確認。CSS、コード記述箇所、タグ記述のミスなどを確認するよう助言。

解決:
質問者は、タグ全表示を試したところ一部しか表示されないことを発見。調査の結果、タグが多すぎると表示されないことが判明。{% paginate collections.all.products by 1000 %}を追加することで解決した。

Summarized with AI on November 13. AI used: claude-sonnet-4-5-20250929.

全商品のタグの中から、タグをいくつかピックアップして、それを一覧にして表示させたいのですが、うまく行きません。過去スレッドやネットなどいくつか参考にさせていただいて、タグを表示させられるところまではできたのですが、タグ名を入れている箇所を複数個に変更して入れると、うまく表示されません。複数ではなく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

早々にご確認いただきありがとうございます。

先にお伝えすると、解決しました!ありがとうございます。

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

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