JSSコードファースト開発でフィールドを持つルートタイプを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
デフォルトでは、JSSアプリに読み込まれたすべてのフィールドは、Sitecore data sources.これらは、ルート アイテムのレイアウトで参照されるデータ アイテムです。ルート アイテム自体には、デフォルトでは独自のフィールドは含まれていません。
項目にフィールドを追加するには、data templateで行う必要があります。
JSSでは、カスタムルートタイプのフィールドを定義できます。カスタム ルート タイプは、新しいデータ テンプレートとしてSitecoreにインポートされます。
コード ファースト開発ワークフローを使用していない場合は、Sitecoreで作成されたルート データ テンプレートのフィールドを使用できます。
ルート上にフィールドを直接追加する状況には、次のようなものがあります。
-
Placeholderコンポーネントに配置されたコンポーネントの外側のフィールド (ヘッダーメタデータや他の静的に配置されたコンポーネントのデータなど) を使用している。
-
1つのコンポーネントだけでなく、ルート内の複数のコンポーネントで使用するコンテンツまたはデータがあります。
-
ルート テンプレートのstandard valuesにデフォルト レイアウトを追加しています (現在、これはSitecore自体で行う必要があります)。
-
高度なデータ モデリング シナリオ。
JSSインポート プロセスでは、常にアプリごとにルート テンプレートが生成されます。このテンプレートは既定のルート テンプレートですが、アプリ マニフェストで定義されているルートの種類の基本テンプレートとしても自動的に設定されます。
ルート上に直接フィールドを持つルートタイプを作成し、それをルートに使用するには:
-
ルートを定義/追加するマニフェストジェネレーターファイル( sitecore/definitions/routes.sitecore.jsなど)で、addRouteType関数を使用して、nameとfieldsを持つルートタイプを追加します。
RequestResponsemanifest.addRouteType({ name: 'MyRoute', fields: [ { name: 'metaTitle', displayName: 'Meta Title', type: manifest.fieldTypes.singleLineText }, { name: 'titleText', displayName: 'Body Title', type: manifest.fieldTypes.singleLineText }, { name: 'body', displayName: 'Body Text', type: manifest.fieldTypes.richText } ] });
手記項目は、コンポーネントの場合と同じ方法で定義します。
-
ルート データ ファイル (たとえば、data/routes/about/en.json) で、ルートのルート データをモックし、カスタム ルート タイプのname値を使用してtemplateプロパティを新しいカスタム ルート タイプに設定します。
RequestResponse{ "name": "route", "template": "MyRoute", "displayName": "Route", "fields": { "metaTitle": "My Route", "titleText": "My Route", "body": "Lorem ipsum dolor sit" }, "placeholders": { // ... }
-
ファイルからルート データを取得する場合、特にすべてのルートが同じタイプを使用している場合は、新しいルート タイプを任意のルートに動的に適用できます。選択したフレームワークでこれを行う方法の例は、ファイルsitecore/definitions/routes.sitecore.js|tsで調べることができます。
次回Sitecoreでアプリケーションをインポートすると、インポート プロセスによって新しいルート タイプのdata templateが作成され、新しく作成されたルートはデータ テンプレートを使用します。
Data template既存のルートのテンプレートは、インポート プロセス中に変更されません。手動で削除するか、Sitecoreでテンプレートを変更するか、開発中にフル ワイプ モードを使用する必要があります。