コンポーネント定義 component-definition
コンポーネント定義とユニバーサルエディター間の JSON 契約について詳しく説明します。
概要 overview
component-definition.json
ファイルは、プロジェクトのコンテンツ作成者が使用できるコンポーネントを定義します。このドキュメントでは、このファイルの目的と、ユニバーサルエディターでこのファイルを使用して作成者にページオーサリングコンポーネントを表示する方法について詳しく説明します。
component-definition.json
ファイルをゼロから作成する必要はありません。プロジェクトのブートストラップに使用するプロジェクトボイラープレートには、ニーズに合わせて調整できる、完全に機能する component-definition.json
ファイルが含まれています。コンポーネント定義の例 example
以下は、例として、完全ですがシンプルな component-definition.json
です。
{
"groups":[
{
"title":"General Components",
"id":"general",
"components":[
{
"title":"Text",
"id":"text",
"model": "text",
"filter": "texts",
"plugins":{
"aem":{
"page":{
"resourceType":"wknd/components/text",
"template":{
"text":"Default Text",
"name":"Text"
}
}
},
"aem65":{
"page":{
"resourceType":"wknd/components/text",
"template":{
"text":"Default Text",
"name":"Text"
}
}
}
}
}
]
}
]
}
groups
groups
groups
は、エディターのプロパティパネルで 追加 アイコンをクリックしてページに新しいコンポーネントを追加した際に、作成者がユニバーサルエディターで見るコンポーネントのグループを定義します。グループは、コンポーネントの整理に役立ちます。共通グループには、一般コンポーネント と 詳細コンポーネント があります。
title
は、エディター UI に表示されるグループのテキストによる説明を定義します。id
は、グループを一意に識別します。
components
components
components
は、グループに属するコンポーネントを定義します。
-
title
は、エディター UI に表示されるコンポーネントのテキストによる説明を定義します。 -
id
は、コンポーネントを一意に識別します。- 同じ
id
のコンポーネントモデルは、コンポーネントのフィールドを定義します。 - これは一意なので、例えば、フィルター定義で使用して、コンテナに追加できるコンポーネントを決定できます。
- 同じ
-
model
は、コンポーネントで使用されるモデルを定義します。- その結果、モデルはコンポーネント定義内で集中管理され、実装を指定する必要はありません。
- これにより、コンテナ間でコンポーネントを移動できます。
-
filter
は、コンポーネントで使用されるフィルターを定義します。
plugins
plugins
plugins
は、コンポーネントの永続化を担当するプラグインを定義します。一般的なプラグインを次に示します。
page
または cf
page-cf
plugin
を定義したら、それがページ関連かフラグメント関連かを示す必要があります。
page
は、コンポーネントが現在のページのコンテンツであることを示します。cf
は、コンポーネントがコンテンツフラグメント内のコンテンツに関連していることを示します。
page
page
コンポーネントがページ上のコンテンツである場合は、次の情報を指定できます。
resourceType
は、コンポーネントのレンダリングに使用される SlingresourceType
を定義します。template
は、新しく作成されたコンポーネントに自動的に書き込まれるオプションのキーや値を定義し、コンポーネントに適用するフィルターやモデルを定義します。- 説明、サンプル、プレースホルダーテキストに役立ちます。
template
template
オプションのキーと値のペアを指定することで、template
はこれらを新しいコンポーネントに自動的に書き込むことができます。さらに、次のオプション値も指定できます。
cf
cf
コンポーネントがコンテンツフラグメント内のコンテンツに関連している場合は、次の情報を指定できます。
name
は、新しく作成されたコンポーネントの JCR に保存されるオプションの名前を定義します。- 情報提供のみを目的としており、通常は
title
のように UI には表示されません。
- 情報提供のみを目的としており、通常は
cfModel
は、新しく作成されたコンポーネントのコンテンツフラグメントモデルを定義します。cfFolder
は、コンテンツフラグメントが作成されるフォルダーを定義します。title
は、新しいコンテンツフラグメントのタイトルを定義します。description
は、新しいコンテンツフラグメントの説明を定義します。template
は、新しく作成されたコンテンツフラグメントに自動的に書き込まれるオプションのキーや値を定義します。- 説明、サンプル、プレースホルダーテキストに役立ちます。
cf
は暗黙的に指定可能 cf-implied
ページが参照フィールドを指すように実装されている場合は、cf
が想定されます。
<div data-aue-resource="urn:aem:/content" data-aue-type="container" data-aue-prop="field"></div>
このような場合、data-aue-prop
が参照フィールドを指しているので、cf
が想定されます。data-aue-prop
がない場合、コンポーネントが参照フィールドを通じてリンクされていないので、ユニバーサルエディターでは page
が想定されます。
<div data-aue-resource="urn:aem:/content" data-aue-type="container"></div>
コンポーネントは、単にリソースの下にあるサブノードです。