1. SXAの拡張

SXAパイプライン

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

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

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

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

resolveVariantTokens

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

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

Processor

Description

ResolveIFileTypeIcon

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

リゾルブアイテムID

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

リゾルブアイテム名

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

リゾルブサイズ

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

デコレートページ

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

デコレートレンダリング

decorateRenderingパイプラインは、レンダリングの外側の <div> タグを属性で装飾するために使用されます。これらは、idclassなどの標準属性にすることができますが、カスタム データ属性を追加することもできます。

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

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

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

Processor

Description

ParseMediaRequest (英語)

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

GetMediaFromUrl

HTTP要求に格納されているURLからメディア項目を判別します。

ハンドルエラー

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

resolveトークン

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

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

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

  • $pageDesigns - ページデザインのルート (sitecore/content/<site collection>/<site>/Presentation/Page Designs).

  • $partialDesigns - パーシャルデザインのルート (sitecore/content/<site collection>/<site>/Presentation/Partial Designs).

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

  • $tenant - 現在のサイト コレクションへのパス。

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

  • $home - 現在のサイト開始アイテムへのパス (デフォルトでは /sitecore/content/<site collection>/<site>/Home)。

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

  • $templates - 現在のサイトテンプレートへのパス(/sitecore/templates/Project/Site Collection)。

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

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

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

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

  • $sitelang - コンテキスト サイトのデフォルト言語。サイト定義アイテムで設定されます。

  • $lang - コンテキスト言語。

  • $vf - コンテキスト サイトの仮想フォルダー。

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

このパイプラインはSitecore.XA.Foundation.TokenResolution.configファイルで定義され、次のプロセッサが含まれています。

Processor

Description

現在のテンプレートトークン

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

エスケープクエリトークン

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

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

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

getRobotsコンテンツ

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

Processor

Description

GetContentFromSettings (英語)

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

GetDefaultRobotsコンテンツ

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

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

<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オブジェクトには、ItemModel (Object型) が含まれています。ユーザーは、Modelプロパティに必要なものを割り当てて、レンダリング バリアントで使用できます。

generateScribanContext

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

getScribanItemメンバー

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

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

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

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

この記事を改善するための提案がある場合は、 お知らせください!