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

Class diagram for the CXAEvent.CartUpdated event

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

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

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