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: AddBundleCartLine APIエンドポイントへの呼び出し。
- AddCartLinesWithSublines: AddCartLinesWithSublines APIエンドポイントへの呼び出し。
- RemoveCartLine: RemoveShoppingCartLine APIエンドポイントへの呼び出し。
- UpdateCartLineQuantity: UpdateCartLineQuantity APIエンドポイントへの呼び出し。
- GetCart: GetCart APIエンドポイントへの呼び出し。 GetCart メソッドに複数の呼び出しがある場合、それらの呼び出しはプールされ、GetCart APIエンドポイントに対しては1つのAjax呼び出しのみが実行されます。 CXACartContext サービスはカートリッジオブジェクトのコピーを保持します。その後、このメソッドに呼び出すたびにカートオブジェクトはコールバック関数に戻されます。キャッシュされたカートオブジェクトは、プロモーションコードの適用などカートメソッドが実行されるたびに無効化されます。
- GetMinicart: recalculateTotals が真であるか、コンテキストがカートリブを取得しているかキャッシュされたカートリッジオブジェクトを持っている場合、メソッドへの呼び出しを転送 GetCart 。そうでなければ、エンドポイントAPI GetMinicartを呼び出します。
- 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モデルを返すため、イベントはcartオブジェクトをイベント引数として発行できます。
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であり、これは更新されたカートです。

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