CXACartContextサービス
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
CXACartContextサービスはカート関連のメソッドを扱い、カート数のキャッシュ管理を行います。
!注Sitecore XC 10で導入されたCXACartContextサービスは、CartContextサービスに代わるものです。以前CartContextが行っていたTriggerCartUpdateEventやSubscribeHandlerなどのイベントは、代わりに消費CXAObservableに移行されました。
CXACartContextサービスは以下の手法を実行します。CXAObservableとやり取りし、さまざまな共有イベントを利用します。
- 方法
- IsCartCountCached。もしそれが真であれば、カート数はブラウザ sessionStorageに保存されます。
- IsCachedCartCountAvailable: はブラウザでカート数が利用可能かどうかを示すブール値 sessionStorage。もしそれが真であれば、 GetCachedCartCount メソッドでキャッシュされたカート数を取り出します。
- GetCachedCartCountカート数の値を取得します。
- UpdateCachedCartCount: ブラウザ sessionStorageでカートリッジ数を更新します。
- DeleteCachedCartCount: はブラウザからキャッシュされたカートリッジ数を削除します sessionStorage。
- AddCartLine: AddCartLine API端への呼び出し
- AddBundleCartLine AddBundleCartLineAPI。
- AddCartLinesWithSublines AddCartLinesWithSublines API。
- RemoveCartLine RemoveShoppingCartLine API。
- UpdateCartLineQuantity UpdateCartLineQuantity API。
- GetCart: エンドポイントへの呼び出し GetCart API。 GetCart メソッドに同時に複数の呼び出しがある場合、それらの呼び出しはプールされ、GetCart APIエンドポイントに対しては1つのAjax呼び出しのみが実行されます。 CXACartContext サービスはカートリッジオブジェクトのコピーを保持します。その後、このメソッドに再呼び出しがあるたびにカートオブジェクトはコールバック関数に返されます。カートメソッドが実行されるたびに、例えばプロモーションコードの適用など、キャッシュされたカートオブジェクトは無効化されます。
- GetMinicart: recalculateTotals が真であるか、コンテキストがカートリブを取得しているか、キャッシュされたカートリッジオブジェクトを持っている場合、メソッドへの呼び出し GetCart 転送します。そうでなければ、エンドポイント GetMinicart API呼び出しを行います。
- GetCartLinesCount GetCartLinesCount API。
- RemoveMinicartLine RemoveMinicartLine API。
- GetPromoCodes: は GetCart メソッドへの呼び出しを転送します。バックエンドが同じカートリッジオブジェクトを返し、不要なAjax呼び出しを減らすために他の GetCart コールと共有できるからです。
- ApplyPromotionCode ApplyDiscount API。
- RemovePromotionCode RemoveDiscount API。
CXACartContextは、カートオブジェクトが特定のAjax呼び出しの応答で受信された際にCXAObservableを通じてイベントCXAEvent.CartUpdatedを発行します。以下のようなものが含まれます:
- AddCartLine
- AddBundleCartLine
- AddCartLinesWithSublines
- RemoveCartLine
- UpdateCartLineQuantity
- GetCart
- GetMinicart
- RemoveMinicartLine
- GetPromoCodes
上記のすべてのメソッドは異なるAPIエンドポイントに呼び出しているかもしれませんが、すべてのAPIエンドポイントは同じCartJsonResultモデルを返すため、イベントはカートオブジェクトをイベント引数として発行できます。
SXA Storefrontは複数の 共有イベントを使用しています。以下のセクションではカートモデルの詳細とコールシーケンスの説明を紹介します。
更新されたカートモデル
以下のクラス図は、CXAEvent.CartUpdatedイベントのモデルを示しており、cart-minicart-model.js、 cart-freeegiftselections-model.js、およびcart-lines-model.jsに見られます。Free Gift Selectionレンダリング、Minicartレンダリング、またはショッピングカートラインのレンダリングがCXAEvent.CartUpdatedイベントに従属すると、返される応答はSitecore.Commerce.XA.Feature.Cart.Models.JsonResults.CartJsonResultであり、これは更新されたカートです。

ミニカートの更新コールシーケンス
以下の図はミニカート更新時のコールシーケンスを示しています。
