SXA パイプライン

概要

SXA パイプラインとそのプロセッサーがどのように機能するかについて説明します。

SXA パイプラインとそのプロセッサーがどのように機能するかを理解すると、依存関係がどのようにレンダリングされるか、バリアントをレンダリングするためのトークンがどのように作成されるか、CSS クラスがどのように生成されるかなどについての知見が得られます。

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

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

このパイプラインには、次のプロセッサーが含まれます。

プロセッサー

説明

ResolveIFileTypeIcon

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

ResolveItemId

解決するコンテンツ アイテムの ID を指定します。

ResolveItemName

解決するコンテンツ アイテムの名前を指定します。

ResolveSize

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

制御の反転 (IoC) 設計原理により、レンダリング自体を変更せずにレンダリングの依存関係を変更できます。iocパイプラインは Sitecore.XA.Foundation.IoC.config ファイルで定義され、コンテナーにカスタム サービスを登録できるプロセッサーを追加するために使用されます。

たとえば、RegisterPageContentServices プロセッサーを追加して、ページ コンテンツ機能で使用されるサービスを登録できます。

    <pipelines>
      <ioc>
        <processor type="Sitecore.XA.Feature.PageContent.Pipelines.IoC.RegisterPageContentServices, Sitecore.XA.Feature.PageContent" />
      </ioc>
    </pipelines>

decoratePage パイプラインはページ<body> タグを属性で装飾するために使用されます。これには、id または class のような標準属性を設定できますが、カスタム データ属性を追加することもできます。

decorateRendering パイプラインはレンダリング外部の &lt;div&gt; タグを属性で装飾するために使用されます。これには、 id または class のような標準属性を設定できますが、カスタム データ属性を追加することもできます。

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

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

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

このパイプラインには、次のプロセッサーが含まれます。

プロセッサー

説明

ParseMediaRequest

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

GetMediaFromUrl

HTTP 要求に格納されている URL からメディア アイテムを決定します。

HandleErrors

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

resolveTokens パイプラインは、クエリで使用できるトークンを解決するために使用されます。以下に例を示します。

  • $compatibleThemes - すべてのテーマへのパス。

  • $theme - 現在使用されているテーマ。

  • $pageDesigns - ページ デザインのルート (sitecore/コンテンツ/テナント/サイト/プレゼンテーション/Page Designs)。

  • $partialDesigns - パーシャル デザインのルート (sitecore/コンテンツ/テナント/サイト/プレゼンテーション/Partial Designs)。

  • $currenttemplate - 現在のテンプレートの名前。

  • $tenant - 現在のテナントへのパス。

  • $site - 現在のサイトへのパス。

  • $home - 現在のサイトの開始アイテムへのパス (デフォルトでは /sitecore/コンテンツ/テナント/サイト/ホーム)。

  • $linkableHomes - リンク可能なサイトからホーム アイテムへのパス。

  • $templates - 現在のサイト テンプレートへのパス (/sitecore/テンプレート/プロジェクト/テナント)。

  • $siteMedia - 仮想メディア フォルダー アイテムの Additional Children フィールドに指定されたメディア フォルダーへのパス。

  • $sharedSites - マルチルート フィールドの場合、現在のテナントの共有サイトを解決します。

  • $rvSystemTemplates - 設定に定義されているテンプレートのリスト。これらのテンプレートは、レンダリング バリアントの AllowedInTemplates をフィードするためのフィールドです。

  • $xaRichTextProfile - XA.Foundation.Editing.DefaultRichTextProfile 設定値。

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

このパイプラインは、Sitecore.XA.Foundation.TokenResolution.config ファイルに含まれており、次のプロセッサーが含まれています。

プロセッサー

説明

CurrentTemplateToken

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

EscapeQueryToken

Sitecore クエリで使用されるトークンをエスケープするために使用されます。

assetService パイプラインは、アセットを最適化します。このパイプラインには、編集モードでテーマを追加するために使用できる AddEditingtheme プロセッサーが含まれます。

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

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

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

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

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

プロセッサー

説明

GetContentFromSettings

ロボットのコンテンツ フィールドが入力されているかどうかを確認し、その値を使用します。

GetDefaultRobotsContent

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

AppendSitemapUrl

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

getRenderingCssClasses パイプラインは、レンダリングに適用される CSS クラスを収集するために使用されます (レンダリング時に CSS クラスのリストに追加されます)。

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

resolveSearchQueryTokens パイプラインは、検索フィルターを追加するために使用されます。このパイプラインは、Sitecore.XA.Foundation.Search.config ファイルに定義されており、デフォルトでは、次のトークンが使用できます。

  • TaggedTheSameAsCurrentPage|SxaTags

  • TaggedWithAtLeastOneTagFromCurrentPage|SxaTags

  • UnderCurrentPage

  • ExcludeCurrentPage

  • ItemsOfTheSameTemplateAsTheCurrentPage

  • ItemsWithTheSameValueInField|FieldName

  • CurrentLanguage

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 パイプラインは、検索ロジックで使用され、検索プロバイダーに送信されるファセット値をエンコード/エスケープします。これは 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 パイプラインは、現在のサイトと共有サイトからすべてのスタイルを取得するために使用されます。このパイプラインは、Sitecore.XA.Foundation.Presentation.config ファイルに定義されており、次のプロセッサーが含まれています。

プロセッサー

説明

GetSiteStyles

サイト上のすべてのスタイルを取得します。

GetSharedStyles

共有サイト上のすべてのスタイルを取得します。

processSearchItems パイプラインは、検索結果のアイテムが返され、ブラウザーに送信される前にトリガーされます。このパイプラインは、Model および Model Iterator バリアント アイテムを使用してページ上でレンダリングできるモデルによって検索結果アイテムを充実させることができます。

ProcessSearchItemsArgs パイプラインには次の 2 つのプロパティが含まれています。

  • Items - オリジナル アイテムのリスト。

  • SearchItems - SearchItem オブジェクトを含むリスト。この SearchItem オブジェクトには、(オブジェクト型の) Item および Model が含まれます。ユーザーは、必要なものをモデル プロパティに割り当てて、レンダリング バリアントに使用できます。

generateScribanContext パイプラインは、Scriban テンプレートで使用できる Scriban コンテキストに追加のオブジェクトと関数を追加します。このパイプラインは i_pagei_site オブジェクト、または sc_field 関数を追加します。

getScribanItemMembers パイプラインは、Scriban テンプレートで使用可能なアイテム オブジェクト ( i_pagei_site など) を、追加のプロパティを使って拡張します。以下に例を示します。

  • i_page.name - ページ名を返します

  • i_page.language - ページの言語名を返します

  • i_home.version - ホーム アイテムのバージョン番号を返します