---
title: "SXA Storefrontの設定ファイルの拡張"
slug: "extending-sxa-storefront-configuration-files"
abstract: "SXA Storefrontの設定ファイルの概要と、それらを拡張する方法の例。"
---
# SXA Storefrontの設定ファイルの拡張

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.config、 Sitecore.Commerce.XA.Feature.Checkout.config、 Sitecore.Commerce.XA.Feature.FreeGiftSelection.config、 Sitecore.Commerce.Feature.Minicart.configなど独自の設定ファイルがあります。

SXA Storefrontの設定ファイルは、Sitecoreに組み込まれた [依存注入](https://doc.sitecore.com/xp/en/developers/100/sitecore-experience-manager/dependency-injection.html) を利用しており、以下の拡張ポイントがあります。デフォルトでは、SXA Storefrontの設定ファイルでは、定義およびカスタマイズ可能な4つの一般的な構成があります。

-   [AJAXコールモデル](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/extending-sxa-storefront-configuration-files.html#UUID-88e204a0-36d6-6c42-8b8b-a7868417515d_section-idm231789626839773 "Ajax call model")
-   [レンダリングモデル](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/extending-sxa-storefront-configuration-files.html#UUID-88e204a0-36d6-6c42-8b8b-a7868417515d_section-idm231789528347448 "Rendering models")
-   [パイプラインとプロセッサ](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/extending-sxa-storefront-configuration-files.html#UUID-88e204a0-36d6-6c42-8b8b-a7868417515d_section-idm231789527752569 "Pipelines and processors")
-   [サービス](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/extending-sxa-storefront-configuration-files.html#UUID-88e204a0-36d6-6c42-8b8b-a7868417515d_section-idm231789522188258 "Services")

必要に応じて追加の設定ファイルを追加することも可能です。

以下のコードは設定ファイル構造の一例です。

<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クラスから継承する新しいカスタムクラスを作成し、定義したカスタムクラスを指すように [デフォルト設定をパッチする](https://doc.sitecore.com/xp/en/developers/100/platform-administration-and-architecture/use-a-patch-file-to-customize-the-sitecore-configuration.html) 新しいカスタム設定ファイルを追加します。また、変更の性質や実装によっては、Ajaxコールを実行するJavaScriptと、その呼びを受け取るバックエンドメソッドを更新する必要があるかもしれません。

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

## レンダリングモデル

ご自身のMVCレンダリングモデルを追加できます。 このセクションでは、次のように定義します:

-   レンダリングモデルの新しいタイプ

以下の例はSitecore.Commerce.XA.Feature.MiniCart.configファイルから取ったもので、ミニカートレンダリングモデルを定義しています。

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

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

通常のMVCレンダリングで消費されるモデルをRazorビューに基づいて拡張する場合、ビューを更新して追加情報を取得します。デフォルトビューを更新する代わりに、[レンダリングをクローン](https://doc.sitecore.com/xp/en/developers/sxa/100/sitecore-experience-accelerator/copy-and-customize-a-rendering.html) し、新しいカスタムビューに向けます。レンダリングをクローンすることで、製品アップグレード時にカスタマイズが上書きされないようにできます。レンダリングがレンダリングバリアントに基づいている場合、SXAレンダラーを使ってカスタムモデルの新しいプロパティにアクセスできます。レンダリングバリアントが[Scribanテンプレート](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/working-with-scriban-templates.html "Working with Scriban templates")を使用している場合、新しいモデルプロパティはすぐに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であり、Storefrontでは各レンダリングのMVCコントローラー SXAサービスとして登録され、カスタマイズや置き換えが可能です。 <services> セクションでは、サービスとインターフェースを登録し、ライフタイムサービス(TransientまたはSingleton)を定義します。各サービスについて、以下を指定します。

-   serviceType - インターフェースAPIの設定。
-   implementationType - インターフェースを実装する。
-   ライフタイムサービス - サービスの扱い方を決定します。一時的なライフタイムサービスは、サービスコンテナからリクエストされるたびに作成されます。一方、シングルトンライフタイムサービスは、最初にリクエストされたときに作成され、その後のすべてのリクエストは同じインスタンスを使用します。

以下の例では、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>