---
title: "SXAパイプライン"
slug: "the-sxa-pipelines"
abstract: "SXAパイプラインとそのプロセッサーの仕組みを理解しましょう。"
---
# SXAパイプライン

SXAパイプラインとそのプロセッサの仕組みを理解することで、依存関係がどのようにレンダリングされ、レンダリングバリアントのトークンがどのように作成され、CSSクラスがどのように生成されるかなどの洞察が得られます。

パイプラインは一連のプロセッサで構成されています。プロセッサはメソッドを実装する.NETクラスです。パイプラインが呼び出されると、プロセッサは順番に実行されます。プロセッサを追加または置き換えることでパイプラインの拡張やカスタマイズが可能です。パイプラインの拡張は、Sitecoreパッチファイルにあるパイプラインの定義を変更することを伴います。

## resolveVariantTokens

resolveVariantTokensパイプラインは、バリアントのレンダリング用トークン作成に使われます。

このパイプラインには以下のプロセッサが含まれます:

**プロセッサ**

**概要**

ResolveIFileTypeIcon

ファイルの拡張子に従ってクラスでspan HTML要素をレンダリングします。

ResolveItemId

解決するコンテンツ項目のIDを指定します。

ResolveItemName(リゾルブアイテムネーム)

解決するコンテンツの名称を指定します。

ResolveSize

ファイルサイズをレンダリングします。

## decoratePage

decoratePageパイプラインはページ<body>タグを属性で装飾するために使われます。これらはidやclassなどの標準的な属性でも構いませんが、カスタムデータ属性を追加することもできます。

## 装飾レンダリング

decorateRenderingパイプラインはレンダリングの外側を装飾するために使われます

属性をタグ付けします。これらは id や classなどの標準的な属性でも構いませんが、カスタムデータ属性を追加することもできます。

<div class="component title">
<div class="component-content">
<h2 class="field-title">
Title of the page
</h2>
</div>
</div>

## mediaRequestHandler

mediaRequestHandlerパイプラインはSXAメディアリクエストハンドラーで使用されます。mediaRequestHandlerパイプラインはSitecore.XA.Foundation.MediaRequestHandler.configファイルで定義されています。

このファイルは、標準メディアリクエストハンドラを拡張し、ワイヤーフレーム画像のサポートや最適化された資産の提供などのカスタム機能を実装するパイプラインを追加します。

このパイプラインには以下のプロセッサが含まれます:

**プロセッサ**

**概要**

ParseMediaRequest

HTTPリクエストが有効なメディアタイプかどうかを確認します。そうでなければパイプラインは中止されます。

GetMediaFromUrl

HTTPリクエストに保存されたURLからメディアアイテムを決定します。

ハンドルエラー

ユーザーをエラーページにリダイレクトします。

## resolveTokens

resolveTokensパイプラインは、クエリで使用できるトークンを解決するために使われます。例えば:

-   $compatibleThemes - すべてのテーマへの道。
-   $theme - 現在使用されているテーマ。
-   $pageDesigns - ページデザインの根(*sitecore/content/Tenant/Site/Presentation/Page Designs*)。
-   $partialDesigns - 部分設計の根(*sitecore/content/Tenant/Site/Presentation/Partial Designs*)。
-   $currenttemplate - 現在のテンプレートの名前。
-   $tenant - 現在のテナントへの経路。
-   $site - 現在の場所への道。
-   $home - 現在のサイト開始項目へのパス(デフォルトでは */sitecore/content/Tenant/Site/Home*)。
-   $linkableHomes - [リンク可能なサイト](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/adjust-link-settings-to-enable-cross-site-linking.html "Adjust link settings to enable cross-site linking")からホームアイテムへの経路。
-   $templates - 現在のサイトテンプレートへのパス(*/sitecore/templates/Project/Tenant*)。
-   $siteMedia - 仮想メディアフォルダ項目の Additional Children フィールドで指定されたメディアフォルダへのパス。
-   $sharedSites - マルチルートフィールドの場合、現在のテナントの共有サイトを解決します。
-   $rvSystemTemplates - 構成で定義されたテンプレートの一覧。これらのテンプレートは、レンダリングバリアントのため AllowedInTemplates フィールドに供給するために使用されます。
-   $xaRichTextProfile - XA.Foundation.Editing.DefaultRichTextProfile 設定値。

このパイプラインに新しいプロセッサを追加することで、新しいトークンを設計できます。

このパイプラインはSitecore.XA.Foundation.TokenResolution.configファイルで定義されており、以下のプロセッサを含みます。

**プロセッサ**

**概要**

CurrentTemplateToken(現在のテンプレートトークン)

現在使用されているトークンを決定します。

EscapeQueryTokens

Sitecoreクエリで使われるトークンを回避するために使われます。

## 資産サービス

assetServiceパイプラインは資産の最適化を担当します。このパイプラインにはAddEditingthemeプロセッサが含まれており、編集モード中にテーマを追加できます。

<assetService>
 <processor type="Sitecore.XA.Foundation.Editing.Pipelines.AssetService.AddEditingTheme, Sitecore.XA.Foundation.Editing" />
 </assetService>

## getControlEditability

getControlEditabilityパイプラインは、レンダリングが編集可能かどうかをチェックするために使われます。Sitecore.XA.Foundation.Editing.configファイル内で定義されています。Editing、Composites、LocalDatasourcesで使用されます。

<getControlEditability>
 <processor type="Sitecore.XA.Foundation.Editing.Pipelines.GetControlEditability.IsRenderingInCurrentItemRenderings, Sitecore.XA.Foundation.Editing" />
 </getControlEditability>

コンポーネントXMLに他のコンポーネントが含まれているかどうか(一意IDで)を確認するIsRenderingInCurrentItemRenderingsプロセッサが含まれます。

## getRobotsContent

getRobotsContentパイプラインは、robots.txtファイル内のクローラーロボット検索に提供される応答を拡張するために使われます。Robots.txtファイルは、サイトのルートディレクトリにあるシンプルなテキストファイルで、検索エンジンロボットに何をクロールし、何をクロールしてはいけないかを伝えます。getRobotsContentパイプラインには以下のプロセッサが含まれています:

**プロセッサ**

**概要**

GetContentFromSettings(GetContentFromSettings)

ロボットのコンテンツフィールドが満たされているかをチェックし、その値を使用します。

GetDefaultRobotsContent

ロボットのコンテンツフィールドが空のときに robots.txt ファイルの値をチェックします。

付録サイトマップURL(AppendSitemapUrl)

sitemap.xmlファイルのパスをロボットのコンテンツフィールドに追加します。

## refreshHttpRoutes

refreshHttpRoutesパイプラインは、サイト設定の変更後にHTTPルートを更新するために使われます。

## resolveSearchQueryTokens

resolveSearchQueryTokensパイプラインは検索フィルターを追加するために使用されます。このパイプラインはSitecore.XA.Foundation.Search.configファイル内で定義されています。デフォルトでは、以下のトークンが利用可能です:

-   TaggedTheSameAsCurrentPage|SxaTags
-   TaggedWithAtLeastOneTagFromCurrentPage|SxaTags
-   UnderCurrentPage
-   ExcludeCurrentPage
-   ItemsOfTheSameTemplateAsTheCurrentPage
-   ItemsWithTheSameValueInField|FieldName

## resolveBoostingQuery

resolveBoostingQueryパイプラインは拡張ポイントを追加し、それを使って独自の検索ブースティングルールを作成し、それをSXAで使うことができます。そのためには、独自のカスタムルールを作成し、resolveBoostingQuerypipelineを使ってそれをクエリに変換することができます。このパイプラインはSitecore.XA.Foundation.Search.configファイルで定義されており、以下のプロセッサを含みます。

resolveBoostingQuery
 processor type="Sitecore.XA.Foundation.Search.Pipelines.ResolveBoostingQuery.ResolveFieldAndQueryMatchRule, Sitecore.XA.Foundation.Search" resolve="true" /
/resolveBoostingQuery
## encodeFacetValue

encodeFacetValueパイプラインは検索ロジックで、検索プロバイダーに送られるファセット値を符号化またはエスケープするために使われます。AzureおよびSolr検索の特殊文字のエスケープにも使われます。このパイプラインはSitecore.XA.Foundation.Search.configファイル内で定義されています。

<encodeFacetValue>
 <processor type="Sitecore.XA.Foundation.Search.Pipelines.EncodeFacetValue.EscapeValue, Sitecore.XA.Foundation.Search" resolve="true" />
</encodeFacetValue>

## getStyles

getStylesパイプラインは、現在および共有サイトからすべてのスタイルを取得するために使用されます。このパイプラインはSitecore.XA.Foundation.Presentation.configファイル内で定義されており、以下のプロセッサを含みます。

プロセッサ

概要

GetSiteStyles

サイトにはすべてのスタイルが掲載されています。

GetSharedStyles

共有サイトですべてのスタイルが見られます。

## プロセス検索項目

processSearchItemsパイプラインは検索結果項目が戻った後、ブラウザに送信する前にトリガーされます。ModelやModel Iteratorバリアント項目を使ってページ上でレンダリング可能なモデルで検索結果項目を豊かにすることができます。

ProcessSearchItemsArgsパイプラインには2つの特性があります:

-   Items - オリジナルアイテムの一覧。
-   SearchItems - SearchItem オブジェクトを含むリスト。この SearchItem オブジェクトには Item と Model (Object型)が含まれます。ユーザーはモデルプロパティに任意のものを割り当て、レンダリングバリアントに利用できます。

## generateScribanContext

generateScribanContextパイプラインは、Scribanのテンプレートで使える追加のオブジェクトや関数をScribanコンテキストに追加します。このパイプラインはi\_page、i\_siteオブジェクト、またはsc\_field関数を追加します。

## getScribanItemMembers

getScribanItemMembersパイプラインは、Scribanテンプレート( i\_page、i\_siteなど)で利用可能なアイテムオブジェクトに追加プロパティを拡張します。例えば:

-   i\_page.name - ページ名を返す
-   i\_page.language - ページ名を返す
-   i\_home.version - ホームアイテムのバージョン番号を返す