---
title: "推奨事項:SXAの延長"
slug: "recommendations--extending-sxa"
abstract: "SXA延長の推奨事項。"
---
# 推奨事項:SXAの延長

例えば、[SXAを拡張](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/extending-sxa.html "Extending SXA")して、SXAツールボックスに自分だけのカスタムレンダリングを追加したり、テーマやテンプレートを追加したりしたいかもしれません。このトピックでは、SXAを拡張するためのいくつかの要件や推奨事項について説明します。

## SXAが管理するツリーの枝にはカスタムアイテムを入れないでください

SXAを拡張する際は、カスタムアイテムをどこに保存するかを考えてください。SXAはSXAのアップデート時に標準のSXAセクションを上書きします。したがって、カスタムアイテムをSXAで制御するツリーブランチに配置すると、アップグレード後にインスタンスが壊れる可能性があります。以下を推奨します:

-   [カスタムモジュール](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-new-sxa-module--mvc-.html "Create a new SXA module (MVC)")を*Experience Accelerator*モジュールの根の兄弟ブランチに配置します。
    
    ![SXA-custom-folder-for-modules.PNG](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/sxa/93/sitecore-experience-accelerator/images/SXA-custom-folder-for-modules.PNG)
    
-   [テンプレート](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")は*Experience Accelerator*フォルダーの兄弟フォルダに入れて、絶対に内側には置かないでください。
    
-   同様に、レンダリング、ブランチ、メディアなど他のすべての領域に対してモジュール固有のルートアイテムを作成する必要があります。
    

関連トピック:

-   [SXAテンプレートを追加・拡張する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")
-   [新しいSXAモジュールを作成する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-new-sxa-module--mvc-.html "Create a new SXA module (MVC)")

## OOTB SXA項目を改変しないでください

SXAを拡張する際は、カスタム機能のために必ずSXA拡張ポイントを使用してください。例えば、[カスタムデータテンプレートを作成する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")などです。それが不可能で拡張機能の正当な理由がある場合は、SXAチームに連絡して拡張機能ポイントを作成してもらうべきです。

関連トピック:

-   [SXAの拡張](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/extending-sxa.html "Extending SXA")
-   [SXAテンプレートを追加・拡張する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")

## SXA MVCレイアウトを交換しないでください

SXA MVCレイアウトはグリッド、テーマ、メタコンポーネントの基盤であり、SXA他の一般的な動作にもその存在を依存できます。レイアウトをカスタム実装に置き換えると、将来のバージョンとの互換性を失うリスクがありますSXA。

レイアウトにカスタムの非ビジュアル要素を追加する必要がある場合は、メタレンダリングを作成し、[それをMeta Partial Design](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/the-html-structure-of-pages-and-renderings.html "The HTML structure of pages and renderings")に追加することを検討してください。ビジュアル要素がある場合は、標準的なSXAレンダリングの使用を検討してください。

 SXAはレイアウトを拡張する複数の可能性を提供します。例えば、以下の通りです:

-   メタ部分設計を用いて非視覚的な拡張を追加します。
-   通常の部分デザインを使って視覚的な拡張を加えます。
-   assetService[パイプライン](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/the-sxa-pipelines.html "The SXA pipelines")を使ってJavaScriptやスタイリング要素を追加してください。
-   [カスタムグリッド](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-custom-grid.html "Create a custom grid")を定義し、<body>タグのカスタムマークアップを定義します。

## カスタムレンダリング用のSXAモジュールを作成しましょう

カスタムレンダリングをSXA[モジュール](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-new-sxa-module--mvc-.html "Create a new SXA module (MVC)") に配置し、既存のサイトに追加したり、新たに作成したサイトで即座に利用したりできます。

あなたは以下のことをしなければなりません:

-   [モジュールにはサイトとテナントの足場連携](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-modules-to-site-and-tenant-scaffolding.html "Add modules to Site and Tenant scaffolding")を提供します。
-   コンポーネントのデータソース定義を含めるか(またはOOTB SXAデータソースを再利用してください)。
-   データソースに対してサイト相対クエリを定義してください。

関連トピック:

-   [SXAの拡張](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/extending-sxa.html "Extending SXA")
-   [SXAテンプレートを追加・拡張する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")
-   [新しいSXAモジュールを作成する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-new-sxa-module--mvc-.html "Create a new SXA module (MVC)")

## ソリューションに機能を追加する際はHelixの原則に従う

Helixは、Sitecore開発のための公式ガイドラインと推奨実践のセットを提供しています。SXA、Sitecore実装の構築、テスト、拡張、保守に関する開発プロセスの推奨を含むSitecore Helix原則に従っています。

以下をお勧めします:

-   SXAの機能モジュールに依存しないようにし、基盤モジュールのみに依存関係を付けてください。レンダリングのクローン作成時に、プラットフォームコードを使って新機能を提供するため、ルール違反は許可されています。この推奨はOOTBのSXAレンダリングに適用され、必ずしもSXAのストアフロントレンダリングには適用されません。
-   特徴を分離し、適切なHelixモジュールに分けましょう。
-   [モジュールにはサイトとテナントの足場連携](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-modules-to-site-and-tenant-scaffolding.html "Add modules to Site and Tenant scaffolding")を提供します。

関連トピック:

-   [SXAの拡張](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/extending-sxa.html "Extending SXA")
-   [SXAテンプレートを追加・拡張する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/add-and-extend-an-sxa-template.html "Add and extend an SXA template")
-   [新しいSXAモジュールを作成する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-new-sxa-module--mvc-.html "Create a new SXA module (MVC)")

## ページのカスタムテンプレートはPageテンプレートを基にしてください

ページを表すカスタムテンプレートを作成する際は、*Page*テンプレートをベーステンプレートとして選択しなければなりません。そうでなければ、特定の機能が動作しないことがあります。

項目ID: *Page*:{3F8A6A5D-7B1A-4566-8CD4-0A50F3030BD8}。

アイテムパス: *sitecore/Templates/Foundation/Experience Accelerator/Multisite/Content/Page*。

## 新しいレンダリングを作る前に既存のレンダリングを使うことを検討してください

フロー [チャート](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/flowchart-to-determine-whether-to-create-a-custom-rendering.html "Flowchart to determine whether to create a custom rendering") を見て、カスタムコンポーネントを作成するかどうか判断してください。

既存のSXAレンダリングは、レンダリングバリアントやコンポジットを使ってカスタマイズできます。可能であれば、カスタムレンダリングを作成する前にバリアントやコンポジットの使用を必ず検討してください。

例えば、レンダリングバリアントでは、[参照項目](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/walkthrough--using-the-rendering-variant-reference-item-to-display-fields-from-a-linked-item.html "Walkthrough: Using the rendering variant reference item to display fields from a linked item") でフィールドを表示したり、[クエリ項目にトークンを](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/walkthrough--using-a-query-to-render-items.html "Walkthrough: Using a query to render items") 使ったり、コンテキスト項目をレンダリングしたりできます。

関連トピック:

-   [SXAレンダリングおよびレンダリングバリアント](https://doc.sitecore.com/xp/en/users/sxa/93/sitecore-experience-accelerator/en/the-sxa-renderings-and-rendering-variants.html)
-   [レンダリングバリアントを作成する](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/create-a-rendering-variant.html "Create a rendering variant")
-   [レンダリングバリアントを使って製品情報を表示する](https://doc.sitecore.com/xp/en/users/93/sitecore-experience-commerce/en/using-rendering-variants-to-display-product-information.html)

## 新しいレンダリングを作る前に既存のレンダリングをクローンすることを検討してください

[SXAレンダリング](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/copy-and-customize-a-rendering.html "Copy and customize a rendering")を簡単にクローンでき、レンダリングバリアントで可能以上にHTMLをカスタマイズできます。その過程で、データソースやレンダリングパラメータを追加することもできます。可能であれば、SXA OOTBコンポーネントで実現可能な機能のためにカスタムレンダリングを構築する前に、この方法を必ず考慮してください。

## 項目にリンクするフィールドの範囲を制限する

クエリをサポートするフィールドについては、編集者が選択できる項目の範囲を制限する必要があります。

例えば、以下を使います:

-   query:$siteMedia – ファイルフィールドや画像フィールドのために。
-   query:$home – ページへのリンクフィールドに対して。
-   query:$site – サイト内の任意の項目にリンクできるフィールド。

[SXAパイプライン](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/the-sxa-pipelines.html "The SXA pipelines")の説明には、トークンの完全なリストとその拡張方法が含まれています。