window.aftersell.cart.hooks の下にあります。
フックは買い物客が見るものを変え、アクションはカートの中身を変えます。変換で無料ギフトのラインを非表示にしても、それはカートと合計金額に残ります。
removeItem で削除すれば、実際に取り除かれます。フックはセットアップの呼び出しなので、
ready() を待たずにスクリプトの冒頭で安全に登録できます。カートの Initialization スクリプトで登録してください(カスタムスクリプトを参照)。登録の仕組み
register* メソッドです。あなたの関数を渡して呼び出すと、それを削除するために呼び出せる登録解除関数が返されます。
throw したフックや関数でないフックはスキップされ、残りは引き続き実行され、カートは動き続けます。1 つの壊れた連携が、カート追加、サブスクリプションピッカー、並び替えを止めることはできません。
裏を返せば、あなたの壊れたフックは静かに失敗します。ブラウザのコンソールには何も届きません。そうした失敗がどこに現れるかは、デバッグを参照してください。
registerLineTransform
registerLineTransform(fn) は、レンダリング前のすべてのカートラインに対して実行されます。買い物客のカートの実際の中身に触れることなく、ラインを非表示にしたり表示を変えたりするために使います。
関数は読み取り専用のラインとセッターを受け取ります。戻り値は登録解除関数です。
setInternalProperties はバンドルグループ化の裏側にあるセッターです。正規のバンドルプロパティを各ラインに刻印することで、サードパーティアプリの個別のカートラインを 1 つのアイテムとしてレンダリングさせます。他のアプリのバンドルラインをグループ化するを参照してください。
registerLineComparator
Array.prototype.sort が期待するのと同じ形のコンパレータです。非表示とリネームの後に実行されるため、変換後のラインを見ます。
0 を返してください。それが、順序を強制する代わりに次のコンパレータに判断を委ねる方法です。
用途: サブスクリプションや高額アイテムを上部に浮かせる、無料ギフトやアドオンを下部に沈める、スポンサー商品を先頭に保つなどです。
registerCartEnricher
registerCartEnricher(registration) は、Shopify Storefront API から追加の商品またはバリアントのデータを取得し、一致する各カートラインの line.metadata[id] に付与します。メタフィールド、タグ、その他 Storefront API が公開するあらゆるものを、Aftersell 側のコード変更なしで表示するために使います。
戻り値は登録解除関数です。
カートが読み込まれるか変更されるたびに、Aftersell はカート上のすべての商品またはバリアントについてフラグメントを取得し、結果を付与します。この取得はノンブロッキングです。カートは即座にレンダリングされ、データが届くと
cart_updated を再発行します。遅い、あるいは失敗するフラグメントがカートを遅らせたり壊したりすることはありません。
line.metadata.pricing は undefined で、metadata 自体のデフォルトは {} です。
用途: メタフィールドをすべてのラインに引き込み(配送見積もり、成分リスト、「別送」フラグ、ロイヤルティ倍率)、Custom code ブロックを通じてレンダリングすることです。カートラインにメタフィールドデータを表示するを参照してください。
各
id が独自の名前空間なので、複数のエンリッチャーは問題なく共存し、データが衝突することはありません。registerSubscriptionOptionsTransform
options.filter(...) を書き、他のアプリのプランをすべて静かに削除してしまうでしょう。セッターなら自分の編集だけを記述できます。パッチはプランごと・フィールドごとにマージされ、同じプランの同じフィールドで実際に競合した場合は最後の書き込みが勝ちます。throw した変換は何も反映されず、他の変換は引き続き適用されます。
すべての変換は、途中までパッチされたビューではなく元のオプションを見るため、登録順序が読み取る内容を変えることはありません。
プランの順序は Shopify が返したままなので、変換で並べ替えることはできません。どのプランを最初に提示するか(そして単発購入のアップグレードボタンがどのプランを購読するか)を制御するには、選んだものを先頭に昇格させる
registerDefaultSubscriptionOptionSelector を使ってください。discountPercent にセッターがないのは、チェックアウトで Shopify が受け付けないプランは、ピッカーの中の破られた約束にしかならないからです。
registerDefaultSubscriptionOptionSelector
id を返すか、判断を委ねる場合は null を返します。
null を返してください。それにより、上書きするのではなく次のセレクターに判断が渡されます。ライン上のどのプランにも一致しない id は null と同じ扱いになり、同様に判断を委ねるため、古い id がピッカーを空白にすることはありません。
関数は (options, context) を受け取ります。context はオプション変換が受け取るものと同じです。
registerSkipAddToCartRule
true を返すと、特定の商品フォームは Aftersell を完全にバイパスして通常どおりカートに追加します。独自のリダイレクトや処理が必要なフォームに便利です。
true ならスキップされるため、ルールは狭く保ち、自分が管理する特定のフォームだけに一致させ、それ以外にはすべて false を返してください。ルールは登録順に評価され、最初の true で停止するため、ルールに副作用を入れないでください。あなたのルールが実行されるかどうかは、その前に登録されたものに依存します。
用途: 独自のリダイレクトが必要な予約注文や見積もりフォーム、サブスクリプションアプリのカスタムフロー、チェックアウトに直行すべき「今すぐ購入」ボタンなどです。ページ全体のインターセプトをオフにするには skip_add_to_cart_interceptor を使えますが、指定したフォームにスコープされるこのフックの方が望ましいです。