SXA Storefront設定ファイルの拡張

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

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

SXA Storefront設定ファイルは機能領域ごとにグループ化され、拡張性を有効にするため、要件に合わせてデフォルトの実装をカスタマイズおよび置き換えることができます。1つの設定ファイルに複数のレンダリングが含まれる場合もあれば、レンダリングに独自の設定ファイルが含まれる場合もあります。

設定ファイルはC:\inetpub\wwwroot\<SXAStorefront>\App_Config\Include\Feature\Commerceディレクトリにあり、次のものが含まれます。

  • Sitecore.Commerce.XA.Feature.Catalog.config - この設定ファイルには、カタログに関連するすべてのものが含まれています。

  • Sitecore.Commerce.XA.Feature.<rendering>.config - いくつかのレンダリングには、Sitecore.Commerce.XA.Feature.Cart.configSitecore.Commerce.XA.Feature.Checkout.configSitecore.Commerce.XA.Feature.FreeGiftSelection.configSitecore.Commerce.Feature.Minicart.configなど、独自の設定ファイルがあります。

SXA Storefront設定ファイルは、Sitecoreに組み込まれた 依存関係の挿入 を利用し、次の拡張ポイントがあります。デフォルトでは、SXA Storefront設定ファイルには、定義およびカスタマイズできる4つの一般的な設定があります。

必要に応じて、追加の設定ファイルを追加できます。

次のコードは、設定ファイルの構造の例です。

<configuration>
    <sitecore>
        <commerce.XA>
           <models>
                <!--<Ajax calls model>---> 
                <!--<Rendering model>--->
           </models>
        </commerce.XA>
        <pipelines>
                <!--<Pipelines’ processors>--->
        </pipelines>
        <services>
                <!--<Registered services>--->
        </services>
    </sitecore>
</configuration>

Ajaxコールモデル

次の例は、Sitecore.Commerce.XA.Feature.Cart.configファイルから取得され、カートの行列数を取得するためにAjax呼び出しで使用されるモデルが定義されています。呼び出しでフロントエンドとバックエンドの間でより多くの情報を渡す場合は、元のCartLinesCountJsonResultクラスを継承する新しいカスタム クラスを作成し、定義したカスタム クラスを指すように 既定の構成にパッチを適用する 新しいカスタム構成ファイルを追加します。また、Ajax呼び出しを実行するJavaScriptと、変更の性質と実装によっては、呼び出しを受け取るバックエンド メソッドを更新する必要がある場合もあります。

<commerce.XA>
    <models>
<CartLinesCountJsonResult
          type="Sitecore.Commerce.XA.Feature.Cart.Models.JsonResults.CartLinesCountJsonResult, Sitecore.Commerce.XA.Feature.Cart" />
    </models>
</commerce.XA>

レンダリングモデル

独自のMVCレンダリングモデルを追加できます。<models>セクションでは、次の項目を定義します。

  • RenderingModelの新しい型

次の例は、Sitecore.Commerce.XA.Feature.MiniCart.configファイルから取得され、Minicartレンダリングモデルを定義しています。

<commerce.XA>
    <models>
<MinicartRenderingModel
        type="Sitecore.Commerce.XA.Feature.Cart.Models.MinicartRenderingModel, Sitecore.Commerce.XA.Feature.Cart" />
</commerce.XA>

既存のレンダリング モデルで公開されているコンテンツを拡張して、レンダリングでより多くのデータを使用できるようにする場合は、元のクラス (この場合はMinicartRenderingModelクラス) を継承する新しいカスタム クラスを作成し、定義したカスタム クラスを指すように既定の構成にパッチを適用する新しいカスタム構成ファイルを追加する必要があります。

Razorビューに基づく通常のMVCレンダリングによって使用されるモデルを拡張する場合は、追加された情報をフェッチするようにビューを更新します。デフォルト ビューを更新する代わりに、レンダリングのクローン を作成し、新しいカスタム ビューにポイントします。レンダリングをクローンすることで、製品のアップグレード中にカスタマイズが上書きされないようにすることができます。レンダリングがレンダリング バリアントに基づいている場合は、SXAレンダラーを使用してカスタム モデルの新しいプロパティにアクセスできます。レンダリング バリアントでScribanテンプレートが使用されている場合、新しいモデル プロパティはすぐに使用可能になり、Scribanコードからアクセスできます。ビューの場合と同様に、製品のアップグレード時にカスタマイズが上書きされないように、レンダリングを複製することが重要です。

パイプラインとプロセッサ

既存のパイプラインを変更したり、カスタム パイプラインを追加したりできます。各パイプラインには、一連のプロセッサが含まれています。 <pipelines> セクションでは、拡張または追加するパイプラインを定義し、新規またはカスタマイズを指定します。

  • 初期化の一部であるプロセッサー

  • 指定したグループの一部であるプロセッサ(experienceAcceleratorなど)

次の例では、Sitecore.Commerce.XA.Feature.Catalog.configファイルから取得した標準のSXAパイプラインがInitializeGlobalFiltersで、パッチが適用される新しいコマース固有のプロセッサがPrepareSearchItemsです。

<pipelines>
      <initialize>
        <processor
          patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters, Sitecore.Mvc']"
          type="Sitecore.Commerce.XA.Feature.Catalog.Pipelines.Initialize.RegisterRoutes, Sitecore.Commerce.XA.Feature.Catalog" />
      </initialize>
      <group groupName="experienceAccelerator">
        <pipelines>
          <processSearchItems>
            <processor type="Sitecore.Commerce.XA.Feature.Catalog.Pipelines.Search.PrepareSearchItems, Sitecore.Commerce.XA.Feature.Catalog" resolve="true" />
          </processSearchItems>
        </pipelines>
      </group>
    </pipelines>

サービス

各サービスレイヤーには、カスタマイズできる独自のインターフェイスがあります。通常、サービスは何らかのAPIであり、SXA Storefrontでは、各レンダリングのMVCコントローラーがサービスとして登録されるため、カスタマイズや置換が可能です。 <services> セクションでは、サービスとインターフェイスを登録し、ライフタイムサービス(TransientまたはSingleton)を定義します。サービスごとに、次の項目を指定します。

  • serviceType - インターフェースAPIを設定します。

  • implementationType - インターフェイスを実装します。

  • Lifetime service - サービスの処理方法を決定します。一時的な有効期間のサービスは、サービス コンテナーから要求されるたびに作成されます。一方、シングルトンの有効期間サービスは、最初に要求されたときに作成され、その後のすべての要求で同じインスタンスが使用されます。

次の例では、Sitecore.Commerce.XA.Feature.Catalog.configファイルから取得された製品価格コントローラーとインターフェイスが一時的としてSitecoreに登録されています。

<service>
<register
    serviceType="Sitecore.Commerce.XA.Feature.Catalog.Controllers.ProductPriceController, 
    Sitecore.Commerce.XA.Feature.Catalog"
    implementationType="Sitecore.Commerce.XA.Feature.Catalog.Controllers.ProductPriceController, 
    Sitecore.Commerce.XA.Feature.Catalog"
    lifetime="Transient" />
</service>
この記事を改善するための提案がある場合は、 お知らせください!