enricher を登録する
カートが読み込まれたり変更されたりするたびに、Aftersell はカート内のすべての商品またはバリアントについて fragment を取得します。この取得は非ブロッキングです。カートは即座にレンダリングされ、データが届いた時点で
cart_updated を再発行します。fragment が遅くても失敗しても、カートが遅延したり壊れたりすることはありません。
データを読み取る
line.metadata.delivery は undefined です。読み取りは必ずガードしてください。
カートにレンダリングする
props.line として渡されます。
バリアントレベルのデータ
onType: 'ProductVariant' を設定します。
メタフィールド以外にも
Product または ProductVariant 上で公開しているものなら何でも使えます。
押さえておくべきポイント
- すべての読み取りをガードする。
metadataのデフォルトは{}で、取得が完了するまで名前空間はundefinedです。カートは常にデータの到着前にレンダリングされます。 - 各
idは独立した名前空間。 複数の enricher は、他のアプリが登録したものも含めて、衝突せずに共存します。 - メタフィールドは Storefront に公開されている必要がある。 Storefront API に公開されていないメタフィールドは
nullを返します。何も返ってこない場合は、Shopify 管理画面で定義を確認してください。 - fragment は小さく保つ。 カート内のすべての商品に対して、カートが変更されるたびに実行されます。必要なフィールドだけをリクエストし、すべてを取得しないようにしてください。
- セットアップ時に登録する。 フックなので、Initialization スクリプトの先頭に置くのが適切です。
- 波かっこは対応させる。 fragment を外側の波かっこで囲む必要はありませんが、入れ子の選択には対応するペアが必要です。対応が取れていない fragment は拒否されます。
次に読むページ
registerCartEnricher: フックの完全なリファレンス。- カスタムコードブロック: データのレンダリング。
- Cart オブジェクト: ライン上の
metadataの位置。