コレクション内の並び順で売り切れ商品を最後に表示する方法

いつもお世話になっております。

コレクション内の並び順で在庫のある商品は通常の並び順のままにしておき、売り切れの商品のみをまとめて最後に表示する方法をLiquidのコード編集で対応できないでしょうか?

  1. コレクション内の商品を表示するループ処理の際に、在庫が切れていた場合は商品を表示せず、在庫切れ商品のIDを配列として保存。
  2. ループが終わった後にもう一度、配列に入れておいた在庫切れ商品のみを表示

といったコードを試してみたのですが、ページネーションがおかしくなってしまい、うまくいきませんでした。

(例えば1ページに20商品表示させる設定になっていても、在庫ぎれの商品があった場合、在庫のある商品10商品しか表示されません)

もしわかる方がいらっしゃいましたら、教えてください。

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

るんさま

はじめまして、フルバランスの渡邉です。

ご質問を確認いたしました。

在庫のある商品が先に表示されたほうが買いやすいですよね。

海外のフォーラムにてliquidで制御する方法が載っておりましたので、なにかヒントになるかもしれません。

https://community.shopify.com/c/shopify-discussions/sort-by-stock-push-out-of-stock-to-bottom-of-list-feature/td-p/1785852

また、少々手間にはなりますが、手動のコレクションを作成して在庫切れ商品を最後に並ベる方法もあるかと存じます。

ご参考になりましたら幸いです。

私たちの励みにもなりますので、
お役に立てていればBest Answerボタンを押して頂ければ嬉しいです。

分からない点があれば、またいつでもご連絡ください。

フルバランス 渡邉

2 Likes

フルバランス

渡邉様

ご回答ありがとうございます。

教えていただいたページをみてみました。

参考になりましたが、やはりページネーションがうまくいきませんでした。

教えていただいたページの方法を試すと、

1ページ目:在庫のある商品、在庫のない商品の順

2ページ目:在庫のある商品、在庫のない商品の順

のような表示となり、1つのページ内で表示順を変更することはできましたが、在庫のある商品全てを表示した後、在庫のない商品を表示するといったことはできませんでした。

paginateタグの外側でコレクションの並び順を変更する方法も考えましたが、paginateタグで使用できる配列が決まっているようなので、そのような方法もやはり難しいでしょうか?

もしわかりましたらこちらも教えていただけると助かります。

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