ユーザーがその商品を購入した事があるか、で分岐するLiquidを書きたい。

特定の商品ページを見ている時、

その商品を購入したことがあるユーザーの場合は

「あなたはこの商品を購入したことがあります」

と表示。

未購入のユーザーの場合は

「まだこの商品を買ったことがありません」

と表示

のように分岐させたいです。

このようなことはLiquidで可能なのでしょうか。

LocalStrageやCockieは使用しない想定です。

また、ストアの「会員機能」はOFFにしており、

基本的には「購入者は総じてストア非会員である」という状況だと仮定します。

参考コード例などをいただけると非常に助かりますが、

有識者の方より「私の知る限り不可能」等のお考えを

いただけるのみでも大変参考になります。

ご助言いただけますと幸いです。

結論から申し上げますと、Liquid のみでの実装はかなり厳しいかと思います。

しかし、「直近の 20 注文以内で顧客該当の商品を購入したかどうか」での出しわけを行うことができます。

以下に、「直近の 20 注文以内で顧客該当の商品を購入したかどうか」での出しわけの実装方針をまとめます。

customer

https://shopify.dev/docs/api/liquid/objects/customer

orders

https://shopify.dev/docs/api/liquid/objects/order

line_item

https://shopify.dev/docs/api/liquid/objects/line_item

  1. 上記の Liquid の customer オブジェクトより、orders を取得(一度に取得できる個数が 20個まで)する
  2. orders の line_items の product_id を確認して、現在の商品(product.id で取得できます)と一致するものがあるかどうかを確認する

上記の方法で、「直近の 20 注文以内で顧客該当の商品を購入したかどうか」の true・false を取得できるので、

こちらを用いて表示の分岐を行う形になるかと思います。

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

orders を取得(一度に取得できる個数が 20個まで)

が制限の理由なんですね。

頂いた情報を基にチャレンジしてみます。

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