CXACartContextサービス
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
CXACartContextサービスは、カート関連のメソッドを処理し、カート数のキャッシュを管理します。
Sitecore XC 10で導入されたCXACartContextサービスは、CartContextサービスに代わるものです。TriggerCartUpdateEventやSubscribeHandlerなど、以前はCartContextによって実行されていたイベントは、代わりにCXAObservableを消費するように移動されました。
CXACartContextサービスでは、次の方法を実行します。CXAObservableと対話し、さまざまな共有イベントを使用します。
|
方式 |
形容 |
コード |
|---|---|---|
|
IsCartCountCached |
カート数をキャッシュするかどうかを示すブール値を取得します。trueの場合、カート数はブラウザーのsessionStorageに保存されます。 |
|
|
IsCachedCartCountAvailable |
ブラウザsessionStorageでカート数が利用可能かどうかを示すブール値を取得します。trueの場合、キャッシュされたカート数はGetCachedCartCountメソッドを使用して取得されます。 |
|
|
GetCachedCartCount |
カート数の値を取得します。 |
|
|
UpdateCachedCartCount |
ブラウザsessionStorageのカート数を更新します。 |
|
|
DeleteCachedCartCount |
キャッシュされたカート数をブラウザー sessionStorageから削除します。 |
|
|
AddCartLine |
AddCartLine APIエンドポイントへの呼び出し |
どこ: cartLineは、AddCartLine APIの想定されるオブジェクトです |
|
AddBundleCartLine |
APIエンドポイントAddBundleCartLine呼び出し。 |
どこ: bundleCartLineは、AddBundleCartLine APIの想定されるオブジェクトです |
|
AddCartLinesWithSublines |
APIエンドポイントAddCartLinesWithSublines呼び出し。 |
どこ: bundleCartLineは、AddCartLinesWithSublines APIの想定されるオブジェクトです |
|
RemoveCartLine |
APIエンドポイントRemoveShoppingCartLine呼び出し。 |
どこ: lineItemIdは、カートの品目の既存の品目IDです。 productIdは、製品の一意の識別子です。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 productNameは名前のProductです。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 productPriceは製品の価格です。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 |
|
UpdateCartLineQuantity |
APIエンドポイントUpdateCartLineQuantity 呼び出し。 |
どこ: lineItemIdは、カートの品目の既存の品目IDです。 quantityは、カート明細行の新しい数量です。 productIdは、製品の一意の識別子です。省略可能なパラメーターですが、コマースのエクスペリエンス プロファイル レポートに更新された数量を表示するために必要です。 variantIdは、製品バリアントの一意の識別子です。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 |
|
GetCart |
APIエンドポイントGetCart 呼び出し。 GetCartメソッドへの複数の呼び出しが同時に行われる場合、呼び出しはプールされ、GetCart APIエンドポイントに対して1つのAjax呼び出しのみが実行されます。CXACartContextサービスは、カートが最初に取得された後も、カート オブジェクトのコピーを保持します。その後、カート オブジェクトは、このメソッドが後で呼び出されるたびにコールバック関数に返されます。キャッシュされたカートオブジェクトは、プロモーションコードの適用など、カートメソッドが実行されるたびに無効になります。 |
|
|
GetMinicart |
recalculateTotalsがtrueの場合、またはコンテキストがカートを取得しているか、キャッシュされたカートオブジェクトがある場合、GetCartメソッドへの呼び出しを転送します。それ以外の場合はGetMinicartAPIエンドポイントを呼び出します。 |
|
|
GetCartLinesCount |
APIエンドポイントGetCartLinesCount呼び出し。 |
|
|
RemoveMinicartLine |
APIエンドポイントRemoveMinicartLine呼び出し。 |
どこ: lineItemIdは、カートの品目の既存の品目IDです。 productIdは、製品の一意の識別子です。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 productNameは名前のProductです。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 productPriceは製品の価格です。オプションのパラメーターですが、エクスペリエンス プロファイルのコマース レポートには必要です。 |
|
GetPromoCodes |
GetCartメソッドに呼び出しを転送します。これは、バックエンドが同じカートオブジェクトを返し、他のGetCart呼び出しと共有して不要なAjax呼び出しを減らすことができるためです。 |
|
|
ApplyPromotionCode |
APIエンドポイントApplyDiscount呼び出し。 |
どこ: promotionCodeは、カートに適用されるプロモーションコードです。 |
|
RemovePromotionCode |
APIエンドポイントRemoveDiscount呼び出し。 |
どこ: promotionCode は、カートから削除するプロモーションコードです。 |
CXACartContextは、次のような特定のAjax呼び出しの応答でcartオブジェクトが受信されると、CXAObservableを介してイベントCXAEvent.CartUpdatedを発行します。
-
AddCartLine
-
AddBundleCartLine
-
AddCartLinesWithSublines
-
RemoveCartLine
-
UpdateCartLineQuantity
-
GetCart
-
GetMinicart
-
RemoveMinicartLine
-
GetPromoCodes
上記のすべてのメソッドが異なるAPIエンドポイントを呼び出している可能性がありますが、すべてのAPIエンドポイントは同じCartJsonResultモデルを返すため、cartオブジェクトをイベント引数としてイベントを生成できます。
SXA Storefrontは、いくつかの 共有イベントを使用します。次のセクションでは、カートモデルの詳細と、呼び出しシーケンスについて説明します。
更新されたカートモデル
更新されたカートモデル
次のクラス図は、cart-minicart-model.js、 cart-freeegiftselections-model.js、およびcart-lines-model.jsにあるCXAEvent.CartUpdatedイベントのモデルを示しています。無料ギフト選択レンダリング、ミニカートレンダリング、またはショッピングカートラインレンダリングがCXAEvent.CartUpdatedイベントにサブスクライブしている場合、返される応答は更新されたカートであるSitecore.Commerce.XA.Feature.Cart.Models.JsonResults.CartJsonResultです。

ミニカート更新の呼び出しシーケンス
ミニカート更新の呼び出しシーケンス
次の図は、ミニカートの更新の呼び出しシーケンスを示しています。
