コレクション一覧ページにページネーションを設置し、新着順に表示したい。

Topic summary

  • 目的: コレクション一覧にページネーションを設置し、「新着順」で表示しつつ、template_suffix が “hoge” のコレクションのみを表示したい(Liquid=Shopifyのテンプレート言語)。

  • 現状/課題: paginate collections の後に if で絞っているため、条件外のコレクションもページ総数に含まれ、空白ブロックや余分なページが発生。表示順も「新着順」にできず困っている。

  • 回答: 「新着順」を「更新日順(last modified)」と解釈すると、Liquid でコレクションをその基準で並べ替えることは現状不可能との指摘。未検証の回避策に関する参考リンクが提示されたが、確実な解は示されていない。

  • 解決策(部分): 空白とページ数過多は、ページネーション前にコレクションを where で絞り込むことで解消可能。例: assign collections = collections | where: “template_suffix”, “hoge” を行ってから paginate/for を適用。

  • 状態: 並び順の要件は未解決。フィルタリングに関する対処は提示され、部分的に収束。コード断片が理解の中心。

Summarized with AI on February 12. AI used: gpt-5.
{% paginate collections by 3 %}
  

{% for collection in collections reversed %}
 {% if collection.template_suffix == 'hoge' %}
    - {{ collection.title }}
    
          {% endif %}
          {% endfor %}
  

  {%- if paginate.pages > 1 -%}

  {% unless paginate.previous.is_link %}
    - 

    {% else %}
    - {% include 'icon-arrow-left' %}
          {{ 'general.pagination.previous' | t }}
      
    

  {% endunless %}
  - {{ 'general.pagination.current_page' | t: current: paginate.current_page, total: paginate.pages }}
  

  {% unless paginate.next.is_link %}
    - 

  {% else %}
    - {% include 'icon-arrow-right' %}
          {{ 'general.pagination.next' | t }}
      
    
  {% endunless %}

  {%- endif -%}
{%- endpaginate -%}
{% endcomment %}

上記の方法でコードでページネーションはできたのですが表示順を新着順にする方法がわからず困っています。

また、テンプレートhoge以外のものも数に含まれており、空白のブロックができてしまいます。

原因がわからずに困っています。

「新着順」が「更新日順」という意味でしたら、現状ではLiquidを用いた並び替えでは不可能だと思われます。

https://community.shopify.com/c/Shopify-Discussion/Sort-collection-order-by-Published-or-Last-Modified-Date/m-p/770285

https://community.shopify.com/c/Shopify-Discussion/Sort-collection-order-by-Published-or-Last-Modified-Date/m-p/770285/highlight/true#M176416

少し古い上未検証ですが以下などは対応策検討の参考になるかもしれません。

https://community.shopify.com/c/Shopify-Design/Music-store-need-to-sort-by-release-date/td-p/261447

空白のブロックというのはわかりかねますが、想定したよりも多い数のページネーションが表示されるということでしたら以下のスレッドを参照ください。

https://community.shopify.com/post/556580

2 Likes

現状新着順というのは難しいのですね・・・

空白というのはコレクションを{% paginate collections by 6 %}をつかいページネーションを付けた場合にすべてのコレクションが表示されてしまうので

{% if collection.template_suffix == ‘hoge’ %}で特定の条件のコレクションを表示したのですが、ページネーションですべてのコレクションを一度取得しているみたいで

条件分岐にはじかれたコレクションが表示自体はされないのですが、すべてのコレクションの数に合うようにページネーションが生成さ、余分な空白とページネーションができてしまっています。

assign collections = collections | where: “template_suffix”, “hoge”

とすることで最初にcollectionsを絞り込めます