コレクションページの商品表示数を変更したい

Topic summary

Shopifyのランキング用コレクションだけ商品表示数を上位20件に制限したいという要望。使用テーマはSymmetry(Online Store 2.0)で、paginateタグ(例: {% paginate collection.products by 9 %})では1ページ当たりの件数制御に留まり、総表示数が20件を超えてしまう課題が指摘された。

提案された解決策は、collection.handleが“ranking”の場合に限り、forループでcollection.productsにlimit:20を適用して商品一覧を出力すること。他のコレクションは通常どおり全商品をループする。

ページネーションはランキングコレクションでは非表示(unless collection.handle == ‘ranking’)にし、それ以外のコレクションでは従来のページネーションを維持する。これによりランキングページでは20件のみ表示され、他ページは通常のページ分割が機能する。

補足: collection.handleはコレクションの識別子(スラッグ)。ページネーションはページ分割機能。Online Store 2.0は新構造のテーマで旧来のコード例がそのまま適用できない場合がある。

現時点で具体的なコード例が提示され、実装方針は明確。採用・動作確認の報告は未記載だが、解決案は提示済み。

Summarized with AI on February 18. AI used: gpt-5.

現在トップページにコレクションの自動ソート機能でランキングを作り、TOP4位まで表示させ

残りはall viewをクリックするとランキングページ(コレクションページ)に遷移し、ベストセラーの順番で商品が一覧表示されるようになっています。

しかし、ランキングページではすべての商品が表示されてしまうため、

ランキングのコレクションのみ上位20位までに制限したいです。

shopify公式にある以下のコードは試しましたが、Online Store 2.0のテーマには対応していないとのことだったので、theme2.0での方法が知れたと思います。

 {% paginate collection.products by 9 %}

現在使用しているテーマ:symmetry(theme 2.0)

ご教授いただけたら幸いです。

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

質問でいただいておりました以下のような形ですと、「コレクション1ページあたりに9商品を表示する」ことになるため、2ページ目、3ページ目と遷移するにつれ20商品を超えてしまいます。

{% paginate collection.products by 9 %}

一例ですが、以下の形で実装されると良いかと思います。

{% if collection.handle == 'ranking' %} 
  {%- for product in collection.products limit:20 -%} 
     商品一覧表示のループ処理
  {%- endfor -%}
{% else %} 
  {%- for product in collection.products -%} 
     商品一覧表示のループ処理
  {%- endfor -%}
{% endif %}

~~~~~~~~~~~~省略~~~~~~~~~~~~~~

{% unless collection.handle == 'ranking' %} 
  ページネーション(ページの切り替え)のコード
{% endunless %}