AEM のコンテンツフラグメントモデルは、コンテンツフラグメントのコンテンツの構造を定義します。これらは、ページオーサリングや、ヘッドレスコンテンツの基盤として使用できます。
コンテンツフラグメントモデルを使用するには、以下を行います。
ツール/一般に移動し、コンテンツフラグメントモデルを開きます。
設定またはサブ設定に適したフォルダーに移動します。
「作成」を使用してウィザードを開きます。
コンテンツフラグメントモデルの使用が有効になっていない場合、「作成」オプションは使用できません。
「モデルタイトル」を指定します。また、「タグ」、「説明」を追加し、必要に応じて「モデルを有効化」を選択してモデルを有効にします。
「作成」を使用して空のモデルを保存します。操作の成功を示すメッセージが表示されます。「開く」を選択してモデルをすぐに編集するか、「完了」を選択してコンソールに戻ることができます。
コンテンツフラグメントモデルは、データタイプの選択を使用して、結果として得られるコンテンツフラグメントの構造を効果的に定義します。モデルエディターを使用して、データ型のインスタンスを追加し、それらを設定して必須フィールドを作成できます。
既存のコンテンツフラグメントモデルを編集すると、依存するフラグメントが影響を受ける可能性があります。
ツール/一般に移動し、コンテンツフラグメントモデルを開きます。
コンテンツフラグメントモデルが含まれているフォルダーに移動します。
必要なモデルを 編集 用に開きます。クイック操作を使用するか、モデルを選択してツールバーから操作を選択します。
モデルを開くと、モデルエディターに次の情報が表示されます。
あるフィールドを必須として指定した場合、左側のウィンドウに表示されるラベルにアスタリスク(*)が付きます。
フィールドを追加するには
必要なデータタイプをフィールドの必要な場所にドラッグします。
フィールドがモデルに追加されると、その特定のデータタイプに対して定義できるプロパティが右側のパネルに表示されます。ここで、そのフィールドに必要な項目を定義することができます。
多くのプロパティは自明です。詳しくは「プロパティ」を参照してください。
「フィールドラベル」を入力すると、「プロパティ名」が空欄の場合は自動入力され、後で手動で更新できます。
データタイプの「プロパティ名」プロパティを手動で更新する場合、名前には、A~Z、a~z、0~9 および特殊文字のアンダースコア「_」のみを使用できます。
以前のバージョンの AEM で作成されたモデルに不正な文字が含まれている場合は、それらの文字を削除または更新してください。
次に例を示します。
フィールドを削除するには
必要なフィールドを選択し、ごみ箱アイコンをクリックまたはタップします。この操作の確認が求められます。
すべての必須フィールドを追加し、必要に応じて関連するプロパティを定義します。次に例を示します。
「保存」を選択して、定義を保持します。
モデルの定義には、次のデータタイプを選択できます。
コンテンツフラグメントコンテンツの編集時に使用するタブを導入可能これは、モデルエディターで区切りとして表示され、コンテンツデータタイプのリストをセクションに分ける働きをします。各インスタンスは、新しいタブの開始を表します。
フラグメントエディターでは、各インスタンスがタブとして表示されます。
このデータタイプは書式設定にのみ使用され、AEM GraphQL スキーマでは無視されます。
多くのプロパティは自明です。プロパティによっては次に示す追加の詳細情報があります。
プロパティ名
データタイプのこのプロパティを手動で更新する場合、名前には、A~Z、a~z、0~9 および特殊文字としてアンダースコア「_」のみを使用する必要があります。
以前のバージョンの AEM で作成されたモデルに不正な文字が含まれている場合は、それらの文字を削除または更新してください。
Render As
フラグメント内のフィールドを実現/レンダリングするための様々なオプション。多くの場合、これにより、作成者にフィールドの 1 つのインスタンスが表示されるか、作成者が複数のインスタンスを作成できるかを定義できます。
フィールドラベル
フィールドラベルはプロパティ名を自動生成します。プロパティ名は必要に応じて手動で更新できます。
検証基本検証は、
必須プロパティなどのメカニズムで使用できます。一部のデータ型には、追加の検証フィールドがあります。詳しくは、「検証」を参照してください。
データタイプが複数行テキストの場合、「デフォルトの種類」を次のいずれかとして定義できます。
指定しなかった場合は、デフォルト値のリッチテキストがこのフィールドで使用されます。
コンテンツフラグメントモデルで「デフォルトの種類」を変更した場合、その影響が既存の関連コンテンツフラグメントに及ぶのは、そのフラグメントがエディターで開かれて保存された後です。
一意:
(特定のフィールドの)コンテンツは、現在のモデルから作成されたすべてのコンテンツフラグメントで一意である必要があります。
これにより、同じモデルの別のフラグメントに既に追加されているコンテンツをコンテンツ作成者が繰り返し作成できないようになります。
例えば、コンテンツフラグメントモデルの 1 行のテキストフィールド Country
は、2 つの依存するコンテンツフラグメントで同じ Japan
値を持つことはできません。2 回目に入力しようとすると、警告が表示されます。
言語ルートごとに一意性が確保されます。
バリエーションは、同じフラグメントのバリエーションと同じ一意の値を持つことができますが、他のフラグメントのバリエーションで使用されている値とは異なります。
特定のデータタイプとそのプロパティについて詳しくは、コンテンツ参照を参照してください。
特定のデータタイプとそのプロパティについて詳しくは、フラグメント参照(ネストされたフラグメント)を参照してください。
変換可能
コンテンツフラグメントモデルエディターのフィールドの「翻訳可能」チェックボックスをオンにした場合:
/content/dam/<sites-configuration>
に確実に追加されます。<translatable>
プロパティを yes
に設定して、変換可能なコンテンツのみを含む JSON を出力するための GraphQL クエリフィルターを許可します。様々なデータ型に、結果のフラグメントにコンテンツが入力される際の検証要件を定義できるようになりました。
コンテンツフラグメントは、次のいずれかのデータタイプを使用して、ネストされたコンテンツを作成できます。
フラグメント参照(ネストされたフラグメント)
指定した特定のモデルに応じて、他のフラグメントを参照します。
構造化データを包含/取得できます。
この方法は、GraphQL でコンテンツフラグメントを使用したヘッドレスコンテンツ配信との関連で特に重要になります。
AEM では次のものの繰り返しを防止できます。
コンテンツ参照
これにより、現在のフラグメントへの参照を追加できなくなります。その結果、空のフラグメント参照選択ダイアログが表示される場合があります。
GraphQL のフラグメント参照
相互に参照される複数のコンテンツフラグメントを返すディープクエリを作成する場合、最初に null が返されます。
コンテンツ参照を使用すると、別のソース(例:画像やコンテンツフラグメント)からコンテンツをレンダリングできます。
標準プロパティに加えて、次のものを指定できます。
フラグメント参照は 1 つ以上のコンテンツフラグメントを参照します。複数のレイヤーを持つ構造化データを取得できるようになるので、アプリケーションで使用するコンテンツを取得する場合、この機能は特に重要になります。
次に例を示します。
type EmployeeModel {
name: String
firstName: String
company: CompanyModel
}
type CompanyModel {
name: String
street: String
city: String
}
これは、GraphQL でコンテンツフラグメントを使用したヘッドレスコンテンツ配信との関連で特に重要になります。
標準プロパティに加えて、次のものを定義できます。
レンダリング時の名前:
multifield - フラグメント作成者は個別の参照を複数作成できます。
fragmentreference - フラグメント作成者はフラグメントへの 1 つの参照を選択できます。
モデルタイプ:
複数のモデルを選択できます。コンテンツフラグメントの作成時には、これらのモデルを使用して参照先のフラグメントが既に作成されている必要があります。
ルートパス:
任意の参照先フラグメントのルートパスを指定します。
フラグメントの作成を許可
これにより、適切なモデルに基づいてフラグメント作成者が新しいフラグメントを作成できるようになります。
繰り返し防止メカニズムが設定されます。これにより、フラグメント参照で現在のコンテンツフラグメントを選択できなくなります。その結果、空のフラグメント参照選択ダイアログが表示される場合があります。
GraphQL にも、フラグメント参照の繰り返し防止機能があります。相互に参照する 2 つのコンテンツフラグメントにわたるディープクエリを作成すると、null が返されます。
コンテンツフラグメントモデルの下記のプロパティを編集できます。
コンテンツフラグメントモデルの使用を完全に制御するために、設定できるステータスがあります。
モデルを作成して有効にすると、次が可能になります。
次のいずれかとしてフラグ付けされたモデルを有効にするには
「有効化」オプションは、次のいずれかから使用します。
モデルを無効にすると、以下のようになります。
「有効」としてフラグ付けされたモデルを無効にするには、次のいずれかの「無効化」オプションを使用します。
コンテンツのガバナンスを実装するには、アセットフォルダーにポリシーを設定して、そのフォルダーでのフラグメント作成に使用可能なコンテンツフラグメントモデルを管理します。
このメカニズムは、ページの高度なプロパティでページとその子に対してページテンプレートを許可することに似ています。
許可されているコンテンツフラグメントモデルにポリシーを設定するには:
必要なアセットフォルダーのプロパティを開きます。
「ポリシー」タブを開き、以下を設定します。
継承元<folder>
ポリシーは、新しい子フォルダーの作成時に自動的に継承されます。サブフォルダーで親フォルダーとは異なるモデルを許可する必要がある場合は、ポリシーを再設定(継承を解除)できます。
許可されているコンテンツフラグメントモデルパス (パス別)
複数のモデルを許可できます。
許可されているコンテンツフラグメントモデルタグ (タグ別)
複数のモデルを許可できます。
変更内容を保存します。
フォルダーに対して許可されるコンテンツフラグメントモデルは、次の順序で解決されます。
コンテンツフラグメントモデルを削除すると、依存するフラグメントが影響を受ける可能性があります。
コンテンツフラグメントモデルを削除するには:
ツール/一般に移動し、コンテンツフラグメントモデルを開きます。
コンテンツフラグメントモデルが含まれているフォルダーに移動します。
モデルを選択し、次にツールバーの「削除」を選択します。
モデルが参照されている場合は、警告が表示されます。適切に対処します。
コンテンツフラグメントモデルは、そのモデルに依存するコンテンツフラグメントの公開時または公開前に公開する必要があります。
コンテンツフラグメントモデルを公開するには:
ツール/一般に移動し、コンテンツフラグメントモデルを開きます。
コンテンツフラグメントモデルが含まれているフォルダーに移動します。
モデルを選択し、次にツールバーの「公開」を選択します。公開ステータスがコンソールに示されます。
まだ公開されていないモデルのコンテンツフラグメントを公開すると、選択リストにそのことが示され、モデルがフラグメントと共に公開されます。
コンテンツフラグメントモデルがフラグメントによって参照されていない場合は、そのモデルを非公開にできます。
コンテンツフラグメントモデルを非公開するには、いずれかを行います。
ツール/一般に移動し、コンテンツフラグメントモデルを開きます。
コンテンツフラグメントモデルが含まれているフォルダーに移動します。
モデルを選択し、次にツールバーの「非公開」を選択します。公開ステータスがコンソールに示されます。
1 つまたは複数のフラグメントで現在使用されているモデルを非公開にしようとすると、エラーメッセージが表示されて通知されます(下図を参照)。
また、メッセージは、参照パネルを確認して詳細を調べるように促します。
この機能は、公開済みのコンテンツフラグメントモデルに対するガバナンスを提供します。
コンテンツフラグメントモデルは、AEM における GraphQL クエリのスキーマを決定します。
AEM GraphQL スキーマは、コンテンツフラグメントモデルが作成されると同時に作成され、オーサー環境とパブリッシュ環境の両方に存在できます。
パブリッシュ上のスキーマは、JSON 形式のコンテンツフラグメントコンテンツをライブ配信する場合の基盤となるので、非常に重要です。
コンテンツフラグメントモデルが変更つまり編集された場合には、問題が発生する可能性があります。つまり、スキーマの変更が既存の GraphQL クエリに影響を与える可能性があります。
コンテンツフラグメントモデルに新しいフィールドを追加する場合は、(通常は)悪影響はありません。ただし、既存のデータフィールド(名前など)を変更したり、フィールド定義を削除したりすると、既存の GraphQL クエリでこれらのフィールドをリクエストする際に、クエリが機能しなくなります。
ライブコンテンツ配信に既に使用されているモデル(つまり、公開済みのモデル)を編集する際のリスクをユーザーに認識させる。
意図しない変更を避ける。
いずれにせよ、変更されたモデルが再公開されると、クエリが機能しなくなる可能性があります。
これらの問題に対処するために、コンテンツフラグメントモデルは、公開され次第、オーサー環境では読み取り専用モードにロックされます。下図のように、ロック済みと表示されます。
モデルがロック済み(読み取り専用モード)の場合、モデルの内容と構造は表示できますが、モデルを編集することはできません。
ロック済みモデルは、コンソールまたはモデルエディターで管理できます。
コンソール
コンソールで、ツールバーの「ロック解除」および「ロック」アクションを使用して、読み取り専用モードを管理できます。
モデルをロック解除して編集を有効にすることができます。
「ロック解除」を選択した場合、警告が表示されるので、「ロック解除」アクションを確定する必要があります。
その後、モデルを編集用に開くことができます。
編集後にまたモデルをロックすることもできます。
モデルは、再公開されると直ちにロック済み(読み取り専用)モードに戻ります。
モデルエディター
ロックされているモデルを開くと、警告が表示され、「キャンセル」、「読み取り専用で表示」、「編集」の 3 つのアクションが提示されます。
「読み取り専用で表示」を選択した場合、モデルの内容と構造が表示されます。
「編集」を選択した場合は、編集して更新内容を保存できます。
まだ上部に警告が表示される場合がありますが、その場合は、モデルが既存のコンテンツフラグメントで既に使用されています。
「キャンセル」を選択すると、コンソールに戻ります。