Skip to main content
カート合計を監視し、無料ギフトをそれと同期させます。購入者が購入金額のしきい値を超えたらギフトを追加し、下回ったら削除します。
ティア、マーケットごとのルール、プログレスバーを備えたマーチャント設定可能なバージョンには、コード不要のRewardsブロックを使用してください。これは、あなたのルールがブロックでは表現できない場合のためのものです。

スニペット

Cart settings → Custom script → Initializationに貼り付け、2つの定数を設定してください。

仕組み

**reconcileGift**はカートがあるべき状態を記述し、そこに到達するために最大1つの変更を行います。
  • 条件を満たしていてギフトがない → addItemで追加します。
  • 条件を満たしておらずギフトがある → removeItemでラインのkeyを指定して削除します。
  • それ以外 → 何もしません。
これはcart_loaded(ページ読み込み時にすでに条件を満たしているカートにギフトが追加される)とcart_updated(その後のすべての変更に反応する)の両方で実行されます。cart_loadedは遅れてサブスクライブした場合にも再生されるため、スクリプトがいつ実行されても機能します。
!gift / giftのガードがループを止めています。 ギフトを追加するとcart_updatedが発火し、reconcileGiftが再度実行されますが、2回目の実行ではギフトがすでに存在するため何もしません。ガードを外すと無限ループになります。2つのルールを参照してください。
ギフトを追加するとカート合計が上がるため、商品価格に近いしきい値では振動が発生する可能性があることに注意してください。$0のギフトを追加するのは安全ですが、価格のあるギフトはそれ自体でカートをしきい値以上に押し上げる可能性があります。ギフトは無料にするか、ギフトを除外した合計と比較してください。

応用

購入金額の代わりに商品数で判定する:
特定の商品がカートにあるかどうかで判定する:
特定の国のみで有効にする。 カート読み込み前から利用可能なcontextを読み取ります。
ギフトをしきい値から除外して、ギフト自身が条件を維持しないようにします。
ギフトだとわかるようにマークする。 ライントランスフォームはラインのタイトル、バリエーションタイトル、非表示状態、内部プロパティを変更できるので、ラベルを付け直します。
ライントランスフォームではラインの数量コントロールを非表示にすることはできません — 使用できるセッターはsetTitlesetVariantTitlesetHiddensetInternalPropertiesのみです。購入者がギフトの数量を変更した場合は、代わりにcart_updatedハンドラーから修正してください。

次に読むべきページ