レイアウト サービス

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

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

Sitecore レイアウト サービスは、Sitecore レイアウト情報を構造化された JSON (JavaScript Object Notation) データとして公開する Sitecore ヘッドレス サービスのエンドポイントです。

このサービスは、Sitecore レンダリング エンジンを使用して構造化された JSON 出力を生成し、レイアウトからレンダリングを切り離します。このサービスを使用すると、JSON データを使用可能なすべてのフロントエンド テクノロジー スタックで Sitecore コンポーネントをレンダリングすることができます。

ヒント

REST または GraphQL エンドポイントを使って、レイアウト サービスからデータをフェッチできます。GraphQL エンドポイントに関するドキュメントについては、「[en] Sitecore Experience Edge for XM」を参照してください。

次の図は、 Sitecore からデカップルド フロントエンド アプリケーションへのレイアウト データの応答フローを示しています。

レイアウト サービスの要求フロー

レイアウト サービスのアクション

レイアウト サービスは 2 つのアクションを公開します。

  • アイテムのレイアウト全体の出力を取得します。

  • 特定のプレースホルダーの出力を取得します。

レイアウト サービスのパスはサイトのホーム アイテムへの相対パスであるため、目的のサイト コンテキストを解決するには、sc_site クエリ文字列パラメーターまたはホスト名を使ってレイアウト サービスを呼び出します。

アイテムのレイアウト全体の出力の取得

アイテムの完全なレイアウト出力を取得するには、レイアウト サービスの render エンドポイントを呼び出す必要があります。

RequestResponse
/sitecore/api/layout/render/[config]?item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false]&sc_site=[your-site-name]

使用可能なパラメーターは次のとおりです。

パラメーター

説明

config

使用するレイアウト サービス設定の名前。JSS の場合、これは通常 jss です。

item

コンテキスト サイトのホーム アイテムまたはアイテム GUID (ID) へのアイテムの相対パス。

sc_lang

取得するアイテムの言語バージョン。

sc_apikey

レイアウト サービス コントローラー (Sitecore.LayoutService.Mvc.Controllers.LayoutServiceControllerSitecore.LayoutService.Mvc) で使用する SSC API キー設定。API キーはクエリ文字列で必須であるか、sc_apikey HTTP ヘッダーを介して送信されます。

sc_site

データをフェッチするサイトの名前。レイアウト サービス呼び出しに含める分析追跡に必要。

tracking

(オプション、Sitecore XP のみ) レイアウト サービス呼び出しの分析追跡を有効または無効にします。既定は true

特定のプレースホルダーの出力の取得

このアクションは、アプリがレイアウトの一部にアクセスする必要がある特別な状況で役立ち、処理されネットワーク経由で送信されるデータの量を最小限に抑えます。

RequestResponse
/sitecore/api/layout/placeholder/[config]?placeholderName=/main&item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false]

このアクションは前に説明した /render アクションと同じパラメーターに加えて、次のパラメーターも受け入れます。

パラメーター

説明

placeholderName

レンダリングするプレースホルダーの名前。このパラメーターの値はコンテンツ エディターのレイアウトの詳細から取得できます。jss 設定で使用される標準の動的プレースホルダーであるため、ここでは動的プレースホルダーのフォーマットを使用する必要があります。

注意

xDB の破損したページ訪問データから placeholder アクションが呼び出されるのを防ぐためにこのアクションを使用する場合、tracking=false を追加します。

レイアウト サービス要求の詳細

レイアウト サービスが /sitecore/api/layout/render/jss?item=/about などの要求を受け取ると、サーバー上では次のプロセスが実行されます。

注記

jss はレイアウト サービスの名前付き設定を表します。独自の名前付き設定を登録して、アプリケーション固有のレイアウト サービス拡張機能を作成することができます。「JSS でのカスタム レイアウト サービス設定の使用」を参照してください。

  1. MVC コントローラーが応答し、?item=/about パラメーターを解析します。

  2. レイアウト サービスは、item パラメーターに基づいてアイテムの検索を実行します。このパラメーターでは、コンテキスト サイトの開始アイテムが考慮されます。ロジックは標準の Sitecore URL 処理と同じです。アイテム GUID も使用できます。

  3. アイテムを解決した後、レイアウト サービスはレイアウトおよびレンダリング定義アイテムのプレースホルダー データを使用してオブジェクト構造にアイテムをレンダリングします。ここでは、mvc.renderPlaceholder パイプラインが使用されます。Sitecore MVC パイプラインを使用して、レンダリング サービスはすべてのパーソナライゼーション ルールのアカウントやアイテムのレイアウト定義のコンテンツ テストを出力します。

  4. MVC ビューをレンダリングする代わりに、カスタム JavaScript シリアライザーは、コンポーネントのデータ ソース アイテムを取得し、それらを JavaScript オブジェクトにシリアル化します。

    注記

    Sitecore.LayoutService.ItemRendering.IRenderingContentsResolver の実装を作成し、レンダリングの Rendering Contents Resolver フィールドでタイプを指定することで、レンダリングのシリアル化出力をカスタマイズできます。

  5. その後、出力が作成され、JSON として返されます。

レイアウト サービス データ

レイアウト サービスは、要求された Sitecore アイテムに関する次の JSON 形式の構造化データを提供します。

  • アイテムの ID とテンプレートを含むフィールド値とメタデータ。

  • レイアウト内の親子関係を示すネストされたツリー構造のプレースホルダーとそのレンダリング。これにより、クライアントのレンダリング ロジックが大幅に簡素化されます。

  • レンダリングに関連付けられたシリアル化されたコンテンツ。既定では、これはレンダリングのデータソース アイテムです。

  • Sitecore フィールドをフィールド タイプに基づいて構造化された JSON にレンダリングし、フィールド値とメタデータ (画像の代替テキストなど) を構造化して使用できるようにします。

  • レンダリングで使用するカスタマイズ可能なコンテキスト データ。現在のサイト、ユーザー、編集モードなどの Sitecore.Context からのデータなど。

編集モードで呼び出される際、レイアウト サービスにはインライン編集をサポートする次のようなデータが含まれます。

  • インライン編集用のエディター マークアップを使用してレンダリングされたフィールド。

  • インライン エディターで編集コントロールを挿入できるようにする、レンダリングとプレースホルダー用の追加のマークアップ。

Sitecore フィールドとレイアウト サービスのフィールド シリアライザー

レイアウト サービスは次のタイプの Sitecore フィールドをシリアル化できます。

  • リッチ テキスト

  • 画像

  • 通常のリンク

  • 日付 / 日時

  • チェックボックス

  • リンク (Droplink、Droptree、Grouped Droplink)

  • マルチリンク (Multlist、Checklist、Treelist、Exten およびそれらのバリアント)

  • 数値

  • ファイル

  • プレーン テキスト (1 行テキスト、複数行テキスト)

他のすべてのフィールド タイプはプレーン テキストとして扱われ、そのままの値で出力されます。

レイアウト サービスと Sitecore のプレースホルダー

アイテムの完全に構造化されたレイアウト データを返すには、レイアウト サービスがレンダリングのプレースホルダーを認識している必要があります。

これらのパブリッシュされたプレースホルダーを検出可能にするには、レイアウト サービス プレースホルダー フィールドが入力されている必要があります。

警告

これは、プレースホルダーに追加できるレンダリングを定義するプレースホルダー設定関連付けられたコントロールとは異なります。レイアウト サービス プレースホルダー フィールドは、フロントエンド レンダリング ホスト内で使用するプレースホルダーを定義します。

ダイナミック プレース ホルダー キー

既定で、レイアウト サービスは、ルート プレースホルダー (通常は main) 以外のすべてのプレースホルダーは動的なプレースホルダーであると想定し、Sitecore の組み込みダイナミック プレースホルダー ロジックを使用して、レンダリングするプレースホルダー キーを決定します。

レイアウト サービスと Sitecore Experience Platform 分析

レイアウト サービスは、Sitecore MVC レンダリング エンジン内で実行され、すべての Sitecore 分析の追跡と機能を保持します。

フロントエンド アプリケーションまたは特定のレイアウト サービス呼び出しの分析追跡を行わない場合は、tracking パラメーターを false に設定します。

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、