1. SXAの拡張

SXAパイプライン

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

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

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

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

resolveVariantTokens

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

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

プロセッサ

概要

ResolveIFileTypeIcon

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

ResolveItemId

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

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

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

ResolveSize

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

decoratePage

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

装飾レンダリング

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

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

Title of the page

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 - リンク可能なサイトからホームアイテムへの経路。
  • $templates - 現在のサイトテンプレートへのパス(/sitecore/templates/Project/Tenant)。
  • $siteMedia - 仮想メディアフォルダ項目の Additional Children フィールドで指定されたメディアフォルダへのパス。
  • $sharedSites - マルチルートフィールドの場合、現在のテナントの共有サイトを解決します。
  • $rvSystemTemplates - 構成で定義されたテンプレートの一覧。これらのテンプレートは、レンダリングバリアントのため AllowedInTemplates フィールドに供給するために使用されます。
  • $xaRichTextProfile - XA.Foundation.Editing.DefaultRichTextProfile 設定値。
  • $sitelang - コンテキストサイトのデフォルト言語で、サイト定義項目に設定されています。
  • $lang - 文脈言語。
  • $vf - コンテキストサイトの仮想フォルダ。

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

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

プロセッサ

概要

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

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

EscapeQueryTokens

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

資産サービス

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

getControlEditability

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

コンポーネント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
  • CurrentLanguage

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ファイル内で定義されています。

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 - ホームアイテムのバージョン番号を返す
この記事を改善するための提案がある場合は、 お知らせください!