CXACartContextサービス

Version:
日本語翻訳に関する免責事項

このページの翻訳は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であり、これは更新されたカートです。

Class diagram for the CXAEvent.CartUpdated event

ミニカートの更新コールシーケンス

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

Sequence diagram showing the Minicart update call sequence
この記事を改善するための提案がある場合は、 お知らせください!