レイアウトサービス
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreレイアウト サービスは、Sitecoreレイアウト情報を構造化されたJavaScript Object Notation (JSON) データとして公開するSitecoreヘッドレス サービス エンドポイントです。
このサービスでは、Sitecoreレンダリングエンジン を活用して構造化されたJSON出力を生成し、layoutとrenderingを分離し、JSONデータを消費できる任意のフロントエンドテクノロジースタックを使用してSitecoreコンポーネントをレンダリングできます。
レイアウトサービスからデータを取得するには、RESTまたはGraphQLエンドポイントを使用します。GraphQLエンドポイントに関するドキュメントについては、Sitecore Experience Edge for XMを参照してください。
次の図は、Sitecoreから分離されたフロントエンド アプリケーションへのレイアウト データ要求/応答フローを示しています。
レイアウト サービス アクション
レイアウト サービスでは、次の2つのアクションが公開されます。
-
アイテムのレイアウト全体の出力を取得します。
-
特定のプレースホルダーの出力を取得します。
目的のサイト コンテキストに解決するには、sc_siteクエリ文字列パラメーターを使用するか、レイアウト サービス パスがサイトのHomeアイテムに対して相対的であるため、ホスト名を使用してレイアウト サービスを呼び出します。
アイテムのレイアウト全体の出力を取得する
アイテムの完全なレイアウト出力を取得するには、レイアウト サービスのrenderエンドポイントを呼び出す必要があります。
/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) を基準としたアイテムへのパス。 |
version |
アイテムのバージョン番号。有効な整数値である必要があります。 |
sc_lang |
取得するアイテムの言語バージョン。 |
sc_apikey |
レイアウト サービス コントローラー (Sitecore.LayoutService.Mvc.Controllers.LayoutServiceController、Sitecore.LayoutService.Mvc) のSSC APIキー。APIキーは、クエリ文字列に必要であるか、sc_apikey HTTPヘッダーを介して送信されます。 |
sc_site |
データを取得するサイトの名前。Layout Serviceの呼び出しに含まれる分析トラッキングに必要です。 |
tracking |
(オプション、Sitecore XPのみ。レイアウト・サービス呼び出しの分析トラッキングを有効/無効にします。 デフォルト: true。 |
tracking_query |
オプション、Sitecore XPのみ。カスタム クエリ文字列の値は、追跡が有効になっている場合、xConnectのPageViewイベントのURLにクエリ文字列として保存されます。値はparam1=value1|param2=val2の形式である必要があります。 |
特定のプレースホルダーの出力を取得する
このアクションは、アプリがレイアウトの一部にアクセスする必要がある特別な状況で、処理およびネットワーク経由で送信されるデータの量を最小限に抑える必要がある場合に便利です。
/sitecore/api/layout/placeholder/[config]?placeholderName=/main&item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false]
このアクションは、前述の /renderアクションと同じパラメーターに加えて、次のパラメーターを受け入れます。
パラメーター |
形容 |
---|---|
placeholderName |
レンダリングするプレースホルダーの名前。このパラメータの値は、コンテンツ エディタのレイアウトの詳細から取得できます。 jss設定には動的プレースホルダーが標準で使用されるため、ここでは動的プレースホルダー形式を使用する必要があります。 |
このアクションを使用する場合は、placeholderアクションの呼び出しによってxDBのページ訪問データが破損するのを防ぐために、tracking=falseを追加します。
レイアウト サービス要求の構造
レイアウトサービスがリクエスト ( /sitecore/api/layout/render/jss?item=/aboutなど) を受信すると、サーバー上で次のプロセスが発生します。
jssは、レイアウト サービスのnamed configurationを表します。独自の名前付き構成を登録して、アプリケーション固有のレイアウト サービス拡張機能を作成できます。「JSSでのカスタムレイアウトサービス設定の使用」を参照してください。
-
MVCコントローラーが応答し、?item=/aboutパラメーターを解析します。
-
レイアウト サービスは、コンテキスト サイトの開始アイテムを考慮するitemパラメーターに基づいてアイテムの検索を実行します。ロジックは、標準のSitecore URL処理と一致します。アイテムのGUIDも使用できます。
-
アイテムを解決した後、レイアウト サービスは、レイアウト定義アイテムとレンダリング定義アイテムのプレースホルダー データを使用して、mvc.renderPlaceholderパイプラインを使用してアイテムをオブジェクト構造にレンダリングします。Sitecore MVCパイプラインを使用すると、レイアウトサービスの出力は、アイテムのレイアウト定義のパーソナライゼーションルールやコンテンツテストを考慮します。
-
MVCビューをレンダリングする代わりに、カスタムJavaScriptシリアライザーはコンポーネントのデータ ソース項目を取得し、それらをJavaScriptオブジェクトにシリアル化します。
手記レンダリングのシリアル化された出力をカスタマイズするには、Sitecore.LayoutService.ItemRendering.IRenderingContentsResolverインターフェイスを実装し、レンダリングのRendering Contents Resolverフィールドにタイプを指定します。
-
その後、出力はアセンブルされ、JSONとして返されます。
レイアウトサービスデータ
レイアウト サービスは、要求されたSitecoreアイテムに関する次のJSON形式の構造化データを提供します。
-
フィールド値とメタデータ (アイテムのIDとテンプレートを含む)。
-
プレースホルダーとそのレンダリングは、レイアウト内の親子関係を示すネストされたツリー構造で示されます。これにより、クライアントのレンダリング ロジックが大幅に簡略化されます。
-
レンダリングに関連付けられたシリアル化されたコンテンツ。デフォルトでは、これはレンダリングのデータソースアイテムです。
-
Sitecoreフィールドをフィールド タイプに基づいて構造化されたJSONにレンダリングし、フィールド値とメタデータ (画像の代替テキストなど) を構造化して使用できるようにします。
-
カスタマイズ可能なコンテキストデータで、レンダリングに便利です。たとえば、現在のサイト、ユーザー、編集モードなどのSitecore.Contextからのデータです。
編集モードで起動すると、レイアウト サービスには、次のようなインライン編集をサポートするデータが含まれます。
-
インライン編集用のエディターマークアップを使用してレンダリングされたフィールド。
-
レンダリングとプレースホルダーの追加マークアップにより、インライン エディターで編集コントロールを挿入できます。
Sitecoreフィールドとレイアウト サービス フィールド シリアライザー
レイアウト サービスは、次のタイプのSitecoreフィールドをシリアル化できます。
-
リッチテキスト
-
画像
-
一般リンク
-
日付 / 日時
-
チェックボックス
-
リンク(Droplink、Droptree、Grouped Droplink)
-
マルチリンク(マルチリスト、チェックリスト、ツリーリスト、エクステン、およびそれらのバリアント)
-
数
-
ファイル
-
プレーンテキスト (1行テキスト、複数行テキスト)
他のすべてのフィールド タイプはプレーン テキストとして扱われ、未処理の値で出力されます。
レイアウト サービスとSitecoreプレースホルダー
アイテムの完全に構造化されたレイアウト データを返すには、レイアウト サービスがレンダリング上のプレースホルダを認識している必要があります。
これらの公開されたプレースホルダーを検出可能にするには、Layout Service Placeholdersフィールドに入力する必要があります。
これを、プレースホルダーに追加できるレンダリングを定義するPlaceholder SettingsのAllowed Controlsと混同しないでください。Layout Service Placeholdersフィールドは、フロントエンドレンダリングホスト内で使用するプレースホルダーを定義します。
ダイナミックプレースホルダーキー
デフォルトでは、レイアウトサービスは、ルートプレースホルダ(通常はmain)以外のすべてのプレースホルダを動的プレースホルダと想定し、Sitecoreの組み込みの動的プレースホルダロジックを使用して、レンダリングするプレースホルダキーを決定します。
レイアウトサービスとSitecore Experience Platform Analytics
レイアウト サービスは、Sitecore MVCレンダリング エンジン内で実行され、Sitecore分析の追跡と機能はすべて保持されます。
フロントエンド アプリケーションや特定のLayout Service呼び出しを分析で追跡しない場合は、trackingパラメーターをfalseに設定します。