コレクション在庫ありを前在庫なしを後ろに出したい。

AI-generated summary

コレクション内の商品一覧で、在庫ありを先、在庫なしを後ろに表示したいという相談。課題は、collection.products 自体が available(在庫有無の真偽値)で並んでいないため、表示時に条件分岐しても2ページ目以降で在庫あり・なしが混在してしまう点です。

主なやり取り:

  • Liquidのフィルターで処理できる可能性はあるが、基本的には全件を対象に並べ替える実装になるだろう、という見解。
  • paginate を大きくして全商品を取得して処理する案もあるが、質問者はきれいな方法ではないと認識。
  • 代替案として、自動コレクションの条件で「在庫数が0より大きい商品」と「それ以外」を分け、命名規則で並べる方法も提案された。

現状:

  • 質問者は在庫あり・なしのコレクションを別途作成して対応中。
  • ただし運用性が悪く、ページネーション上でも混在が起きるため不便。
  • 根本的に collection.products を在庫有無で整列できる明確な解決策は示されず、議論は未解決のままです。

お世話になります。

コレクションで在庫ありを前、在庫なしを後ろで表示したいと考えています。

商品をループで表示する際、
available true
available false
で抽出すればできるのですが、そもそもcollection.productsの中身がavailableでソートされているわけではないので、2ページ目以降でも在庫あり・なしが混在する形となってしまします。

理想的にはcollection.products自体がavailableでソートされている形で取り出したいのですが、可能なのでしょうか。

{% paginate collections.all.products by 1000 %}
のようにpaginateの値を大きくして該当コレクションの全商品を取得するようにすれば処理できるのですが、きれいな形ではないと考えています。

よろしくお願いします。

フィルターで効率よくかけるかもしれませんが、基本は全件操作になると思います。
https://shopify.dev/docs/themes/liquid/reference/filters/array-filters

あとは、そもそも自動コレクションの条件に在庫数があるので、在庫がゼロより大きいものと、そうでないものを作って、命名規則で並べる方法もありますが、それとは別の条件でコレクションが存在するという意味でしょうか?

ありがとうございます。
やっぱり全件表示ですね。

ありがとうございます。
現状は在庫あり・なしのコレクションを作成して対応してます。

ただ、これだと運用性が悪いのと在庫ありなしのページネーション2ページ以降にも在庫ありなしが混在するのでユーザーに対して不便だなと思ってます。