コンテンツフラグメントモデル

AEM のコンテンツフラグメントモデルは、コンテンツフラグメントのコンテンツの構造を定義します。これらは、ページオーサリングや、ヘッドレスコンテンツの基盤として使用できます。

コンテンツフラグメントモデルを使用するには、以下を行います。

  1. インスタンスに対するコンテンツフラグメントモデル機能の有効化
  2. コンテンツフラグメントモデルの作成設定
  3. コンテンツフラグメントモデルを有効化(コンテンツフラグメントの作成時に使用)
  4. ポリシー​の設定による必要なアセットフォルダーに対するコンテンツフラグメントモデルの許可

コンテンツフラグメントモデルの作成

  1. ツール一般​に移動し、コンテンツフラグメントモデル​を開きます。

  2. 設定またはサブ設定に適したフォルダーに移動します。

  3. 作成」を使用してウィザードを開きます。

    注意

    コンテンツフラグメントモデルの使用が有効になっていない場合、「作成」オプションは使用できません。

  4. モデルタイトル」を指定します。また、「タグ」、「説明」を追加し、必要に応じて「モデルを有効化」を選択してモデルを有効にします。

    タイトルと説明

  5. 作成」を使用して空のモデルを保存します。操作の成功を示すメッセージが表示されます。「開く」を選択してモデルをすぐに編集するか、「完了」を選択してコンソールに戻ることができます。

コンテンツフラグメントモデルの定義

コンテンツフラグメントモデルは、データタイプ​の選択を使用して、結果として得られるコンテンツフラグメントの構造を効果的に定義します。モデルエディターを使用して、データ型のインスタンスを追加し、それらを設定して必須フィールドを作成できます。

注意

既存のコンテンツフラグメントモデルを編集すると、依存するフラグメントが影響を受ける可能性があります。

  1. ツール一般​に移動し、コンテンツフラグメントモデル​を開きます。

  2. コンテンツフラグメントモデルが含まれているフォルダーに移動します。

  3. 必要なモデルを 編集 用に開きます。クイック操作を使用するか、モデルを選択してツールバーから操作を選択します。

    モデルを開くと、モデルエディターに次の情報が表示されます。

    • 左:既に定義されているフィールド
    • 右:フィールドの作成に使用できる​データタイプ(およびフィールドの作成後に使用する​プロパティ
    メモ

    あるフィールドを​必須​として指定した場合、左側のウィンドウに表示される​ラベル​にアスタリスク(*)が付きます。

プロパティ

  1. フィールドを追加するには

    • 必要なデータタイプをフィールドの必要な場所にドラッグします。

      フィールドへのデータタイプのドラッグ

    • フィールドがモデルに追加されると、その特定のデータタイプに対して定義できる​プロパティ​が右側のパネルに表示されます。ここで、そのフィールドに必要な項目を定義することができます。

      • 多くのプロパティは自明です。詳しくは「プロパティ」を参照してください。

      • フィールドラベル」を入力すると、「プロパティ名」が空欄の場合は自動入力され、後で手動で更新できます。

        注意

        データタイプの「プロパティ名」プロパティを手動で更新する場合、名前には、A~Z、a~z、0~9 および特殊文字のアンダースコア「_」のみを使用できます。

        以前のバージョンの AEM で作成されたモデルに不正な文字が含まれている場合は、それらの文字を削除または更新してください。

      次に例を示します。

      フィールドのプロパティ

  2. フィールドを削除するには

    必要なフィールドを選択し、ごみ箱アイコンをクリックまたはタップします。この操作の確認が求められます。

    削除

  3. すべての必須フィールドを追加し、必要に応じて関連するプロパティを定義します。次に例を示します。

    保存

  4. 保存」を選択して、定義を保持します。

データタイプ

モデルの定義には、次のデータタイプを選択できます。

  • 1 行のテキスト
    • 1 行のテキストのフィールドを 1 つ以上追加(最大長は定義可能)
  • 複数行テキスト
    • リッチテキスト、プレーンテキストまたはマークダウンのテキスト領域
  • 数値
    • 1 つ以上の数値フィールドを追加
  • ブール型
    • ブール型チェックボックスを追加
  • 日時
    • 日付や時刻を追加
  • 列挙
    • チェックボックス、ラジオボタン、ドロップダウンフィールドのセットを追加
  • タグ
    • フラグメント作成者がタグの領域にアクセスして選択できるようにする
  • コンテンツ参照
  • フラグメント参照
    • 他のコンテンツフラグメントの参照を、ネストされたコンテンツの作成に使用可能
    • このデータタイプは、フラグメント作成者が次の操作を行えるように設定可能です。
      • 参照先フラグメントの直接編集
      • 適切なモデルに基づいた新しいコンテンツフラグメントの作成
  • JSON オブジェクト
    • コンテンツフラグメントの作成者がフラグメントの対応する要素に JSON 構文を入力可能
      • 別のサービスからコピー&ペーストした JSON を AEM に直接保存できるようにする。
      • JSON が渡され GraphQL で JSON として出力される。
      • コンテンツフラグメントエディターに JSON 構文のハイライト表示機能、オートコンプリート、エラーのハイライト表示が組み込まれている。
  • タブプレースホルダー
    • コンテンツフラグメントコンテンツの編集時に使用するタブを導入可能これは、モデルエディターで区切りとして表示され、コンテンツデータタイプのリストをセクションに分ける働きをします。各インスタンスは、新しいタブの開始を表します。
      フラグメントエディターでは、各インスタンスがタブとして表示されます。

      メモ

      このデータタイプは書式設定にのみ使用され、AEM GraphQL スキーマでは無視されます。

プロパティ

多くのプロパティは自明です。プロパティによっては次に示す追加の詳細情報があります。

  • プロパティ名

    データタイプのこのプロパティを手動で更新する場合、名前には、A~Z、a~z、0~9 および特殊文字としてアンダースコア「_」のみを​使用する​必要があります

    注意

    以前のバージョンの AEM で作成されたモデルに不正な文字が含まれている場合は、それらの文字を削除または更新してください。

  • Render As
    フラグメント内のフィールドを実現/レンダリングするための様々なオプション。多くの場合、これにより、作成者にフィールドの 1 つのインスタンスが表示されるか、作成者が複数のインスタンスを作成できるかを定義できます。

  • フィールドラベル
    フィールドラベル​は​プロパティ名​を自動生成します。プロパティ名は必要に応じて手動で更新できます。

  • 検証基本検証は、
    必須​プロパティなどのメカニズムで使用できます。一部のデータ型には、追加の検証フィールドがあります。詳しくは、「検証」を参照してください。

  • データタイプが​複数行テキスト​の場合、「デフォルトの種類」を次のいずれかとして定義できます。

    • リッチテキスト
    • Markdown
    • プレーンテキスト

    指定しなかった場合は、デフォルト値の​リッチテキスト​がこのフィールドで使用されます。

    コンテンツフラグメントモデルで「デフォルトの種類」を変更した場合、その影響が既存の関連コンテンツフラグメントに及ぶのは、そのフラグメントがエディターで開かれて保存された後です。

  • 一意
    (特定のフィールドの)コンテンツは、現在のモデルから作成されたすべてのコンテンツフラグメントで一意である必要があります。

    これにより、同じモデルの別のフラグメントに既に追加されているコンテンツをコンテンツ作成者が繰り返し作成できないようになります。

    例えば、コンテンツフラグメントモデルの 1 行のテキスト​フィールド Country は、2 つの依存するコンテンツフラグメントで同じ Japan 値を持つことはできません。2 回目に入力しようとすると、警告が表示されます。

    メモ

    言語ルートごとに一意性が確保されます。

    メモ

    バリエーションは、同じフラグメントのバリエーションと同じ​一意の​値を持つことができますが、他のフラグメントのバリエーションで使用されている値とは異なります。

  • 特定のデータタイプとそのプロパティについて詳しくは、コンテンツ参照​を参照してください。

  • 特定のデータタイプとそのプロパティについて詳しくは、フラグメント参照(ネストされたフラグメント)​を参照してください。

  • 変換可能

    コンテンツフラグメントモデルエディターのフィールドの「翻訳可能」チェックボックスをオンにした場合:

    • フィールドのプロパティ名がまだ存在しない場合は、翻訳設定のコンテキスト /content/dam/<sites-configuration> に確実に追加されます。
    • GraphQL の場合:「コンテンツフラグメント」フィールドの <translatable> プロパティを yes に設定して、変換可能なコンテンツのみを含む JSON を出力するための GraphQL クエリフィルターを許可します。

検証

様々なデータ型に、結果のフラグメントにコンテンツが入力される際の検証要件を定義できるようになりました。

  • 1 行のテキスト
    • 事前定義された正規表現と比較します。
  • 数値
    • 特定の値を確認します。
  • コンテンツ参照
    • 特定のタイプのコンテンツをテストします。
    • 指定したファイルサイズ以下のアセットのみを参照できます。
    • 定義済みの幅または高さ(ピクセル単位)の範囲に収まる画像のみを参照できます。
  • フラグメント参照
    • 特定のコンテンツフラグメントモデルをテストします。

参照の使用によるネストされたコンテンツの作成

コンテンツフラグメントは、次のいずれかのデータタイプを使用して、ネストされたコンテンツを作成できます。

メモ

AEM では次のものの繰り返しを防止できます。

  • コンテンツ参照
    これにより、現在のフラグメントへの参照を追加できなくなります。その結果、空のフラグメント参照選択ダイアログが表示される場合があります。

  • GraphQL のフラグメント参照
    相互に参照される複数のコンテンツフラグメントを返すディープクエリを作成する場合、最初に null が返されます。

コンテンツ参照

コンテンツ参照を使用すると、別のソース(例:画像やコンテンツフラグメント)からコンテンツをレンダリングできます。

標準プロパティに加えて、次のものを指定できます。

  • 参照される任意のコンテンツの​ルートパス
  • 参照可能なコンテンツタイプ
  • ファイルサイズの制限
  • 画像が参照されている場合:
    • サムネールを表示
    • 画像の高さと幅の制限

コンテンツ参照

フラグメント参照(ネストされたフラグメント)

フラグメント参照は 1 つ以上のコンテンツフラグメントを参照します。複数のレイヤーを持つ構造化データを取得できるようになるので、アプリケーションで使用するコンテンツを取得する場合、この機能は特に重要になります。

次に例を示します。

  • 従業員の詳細を定義するモデルです。以下が含まれます。
    • 事業主(会社)を定義するモデルへの参照
type EmployeeModel {
    name: String
    firstName: String
    company: CompanyModel
}

type CompanyModel {
    name: String
    street: String
    city: String
}
メモ

標準プロパティに加えて、次のものを定義できます。

  • レンダリング時の名前:

    • multifield - フラグメント作成者は個別の参照を複数作成できます。

    • fragmentreference - フラグメント作成者はフラグメントへの 1 つの参照を選択できます。

  • モデルタイプ
    複数のモデルを選択できます。コンテンツフラグメントの作成時には、これらのモデルを使用して参照先のフラグメントが既に作成されている必要があります。

  • ルートパス
    任意の参照先フラグメントのルートパスを指定します。

  • フラグメントの作成を許可

    これにより、適切なモデルに基づいてフラグメント作成者が新しいフラグメントを作成できるようになります。

    • fragmentreferencecomposite - フラグメント作成者が複数のフラグメントを選択して複合フラグメントを作成できるようになります。

    フラグメント参照

メモ

繰り返し防止メカニズムが設定されます。これにより、フラグメント参照で現在のコンテンツフラグメントを選択できなくなります。その結果、空のフラグメント参照選択ダイアログが表示される場合があります。

GraphQL にも、フラグメント参照の繰り返し防止機能があります。相互に参照する 2 つのコンテンツフラグメントにわたるディープクエリを作成すると、null が返されます。

コンテンツフラグメントモデル - プロパティ

コンテンツフラグメントモデルの下記の​プロパティ​を編集できます。

  • 基本
    • モデルタイトル
    • タグ
    • 説明
    • 画像をアップロード

コンテンツフラグメントモデルの有効化または無効化

コンテンツフラグメントモデルの使用を完全に制御するために、設定できるステータスがあります。

コンテンツフラグメントモデルの有効化

モデルを作成して有効にすると、次が可能になります。

  • 新しいコンテンツフラグメントの作成時に選択する
  • コンテンツフラグメントモデル内から参照する
  • GraphQL で使用する(スキーマが生成される)

次のいずれかとしてフラグ付けされたモデルを有効にするには

  • ドラフト:新規(無効)
  • 無効:明示的に無効化されている

​有効化」オプションは、次のいずれかから使用します。

  • 上部のツールバー(必要なモデルが選択されている場合)
  • 対応するクイックアクション(必要なモデルにマウスを移動)

ドラフトまたは無効なモデルの有効化

コンテンツフラグメントモデルの無効化

モデルを無効にすると、以下のようになります。

  • このモデルは、新しい​コンテンツフラグメントを作成する際の基盤としては使用できなくなります。
  • ただし、
    • GraphQL スキーマは生成され続け、スキーマのクエリも引き続き可能です(JSON API への影響を回避するため)。
    • モデルに基づくコンテンツフラグメントは、引き続き GraphQL エンドポイントからクエリして返すことができます。
  • モデルは参照できなくなりますが、既存の参照は変更されず、引き続き GraphQL エンドポイントからクエリして返すことができます。

有効」としてフラグ付けされたモデルを無効にするには、次のいずれかの「無効化」オプションを使用します。

  • 上部のツールバー(必要なモデルが選択されている場合)
  • 対応するクイックアクション(必要なモデルにマウスを移動)

有効なモデルの無効化

アセットフォルダーでのコンテンツフラグメントモデルの許可

コンテンツのガバナンスを実装するには、アセットフォルダーに​ポリシー​を設定して、そのフォルダーでのフラグメント作成に使用可能なコンテンツフラグメントモデルを管理します。

メモ

このメカニズムは、ページの高度なプロパティでページとその子に対してページテンプレートを許可することに似ています。

許可されているコンテンツフラグメントモデル​に​ポリシー​を設定するには:

  1. 必要なアセットフォルダーの​プロパティ​を開きます。

  2. ポリシー」タブを開き、以下を設定します。

    • 継承元<folder>

      ポリシーは、新しい子フォルダーの作成時に自動的に継承されます。サブフォルダーで親フォルダーとは異なるモデルを許可する必要がある場合は、ポリシーを再設定(継承を解除)できます。

    • 許可されているコンテンツフラグメントモデルパス (パス別)

      複数のモデルを許可できます。

    • 許可されているコンテンツフラグメントモデルタグ (タグ別)

      複数のモデルを許可できます。
      コンテンツフラグメントモデルポリシー

  3. 変更内容を​保存​します。

フォルダーに対して許可されるコンテンツフラグメントモデルは、次の順序で解決されます。

  • 許可されているコンテンツフラグメントモデル​の​ポリシー
  • 空の場合は、継承ルールを使用してポリシーの決定を試みます。
  • 継承チェーンを使用しても結果が得られない場合は、そのフォルダーの Cloud Services 設定を調べます(最初は直接、次に継承を使用して調べます)。
  • 上記のいずれでも結果が得られない場合、そのフォルダーに許可されるモデルはありません。

コンテンツフラグメントモデルの削除

注意

コンテンツフラグメントモデルを削除すると、依存するフラグメントが影響を受ける可能性があります。

コンテンツフラグメントモデルを削除するには:

  1. ツール一般​に移動し、コンテンツフラグメントモデル​を開きます。

  2. コンテンツフラグメントモデルが含まれているフォルダーに移動します。

  3. モデルを選択し、次にツールバーの「削除」を選択します。

    メモ

    モデルが参照されている場合は、警告が表示されます。適切に対処します。

コンテンツフラグメントモデルの公開

コンテンツフラグメントモデルは、そのモデルに依存するコンテンツフラグメントの公開時または公開前に公開する必要があります。

コンテンツフラグメントモデルを公開するには:

  1. ツール一般​に移動し、コンテンツフラグメントモデル​を開きます。

  2. コンテンツフラグメントモデルが含まれているフォルダーに移動します。

  3. モデルを選択し、次にツールバーの「公開」を選択します。公開ステータスがコンソールに示されます。

    メモ

    まだ公開されていないモデルのコンテンツフラグメントを公開すると、選択リストにそのことが示され、モデルがフラグメントと共に公開されます。

コンテンツフラグメントモデルを非公開にする

コンテンツフラグメントモデルがフラグメントによって参照されていない場合は、そのモデルを非公開にできます。

コンテンツフラグメントモデルを非公開するには、いずれかを行います。

  1. ツール一般​に移動し、コンテンツフラグメントモデル​を開きます。

  2. コンテンツフラグメントモデルが含まれているフォルダーに移動します。

  3. モデルを選択し、次にツールバーの「非公開」を選択します。公開ステータスがコンソールに示されます。

1 つまたは複数のフラグメントで現在使用されているモデルを非公開にしようとすると、エラーメッセージが表示されて通知されます(下図を参照)。

使用中のモデルを非公開にするときに表示されるコンテンツフラグメントモデルのエラーメッセージ

また、メッセージは、参照パネルを確認して詳細を調べるように促します。

参照パネル内のコンテンツフラグメントモデル

ロック済み(公開済み)コンテンツフラグメントモデル

この機能は、公開済みのコンテンツフラグメントモデルに対するガバナンスを提供します。

課題

  • コンテンツフラグメントモデルは、AEM における GraphQL クエリのスキーマを決定します。

    • AEM GraphQL スキーマは、コンテンツフラグメントモデルが作成されると同時に作成され、オーサー環境とパブリッシュ環境の両方に存在できます。

    • パブリッシュ上のスキーマは、JSON 形式のコンテンツフラグメントコンテンツをライブ配信する場合の基盤となるので、非常に重要です。

  • コンテンツフラグメントモデルが変更つまり編集された場合には、問題が発生する可能性があります。つまり、スキーマの変更が既存の GraphQL クエリに影響を与える可能性があります。

  • コンテンツフラグメントモデルに新しいフィールドを追加する場合は、(通常は)悪影響はありません。ただし、既存のデータフィールド(名前など)を変更したり、フィールド定義を削除したりすると、既存の GraphQL クエリでこれらのフィールドをリクエストする際に、クエリが機能しなくなります。

要件

  • ライブコンテンツ配信に既に使用されているモデル(つまり、公開済みのモデル)を編集する際のリスクをユーザーに認識させる。

  • 意図しない変更を避ける。

いずれにせよ、変更されたモデルが再公開されると、クエリが機能しなくなる可能性があります。

解決策

これらの問題に対処するために、コンテンツフラグメントモデルは、公開され次第、オーサー環境では読み取り専用モードに​ロック​されます。下図のように、ロック済み​と表示されます。

ロックされたコンテンツフラグメントモデルのカード

モデルが​ロック済み(読み取り専用モード)の場合、モデルの内容と構造は表示できますが、モデルを編集することはできません。

ロック済み​モデルは、コンソールまたはモデルエディターで管理できます。

  • コンソール

    コンソールで、ツールバーの「ロック解除」および「ロック」アクションを使用して、読み取り専用モードを管理できます。

    ロックされたコンテンツフラグメントモデルのツールバー

    • モデルを​ロック解除​して編集を有効にすることができます。

      ロック解除」を選択した場合、警告が表示されるので、「ロック解除」アクションを確定する必要があります。
      コンテンツフラグメントモデルをロック解除する際のメッセージ

      その後、モデルを編集用に開くことができます。

    • 編集後にまたモデルを​ロック​することもできます。

    • モデルは、再公開されると直ちに​ロック済み(読み取り専用)モードに戻ります。

  • モデルエディター

    • ロックされているモデルを開くと、警告が表示され、「キャンセル」、「読み取り専用で表示」、「編集」の 3 つのアクションが提示されます。

      ロックされたコンテンツフラグメントモデルを表示する際のメッセージ

    • 読み取り専用で表示」を選択した場合、モデルの内容と構造が表示されます。

      読み取り専用で表示 - ロックされたコンテンツフラグメントモデル

    • 編集」を選択した場合は、編集して更新内容を保存できます。

      編集 - ロックされたコンテンツフラグメントモデル

      メモ

      まだ上部に警告が表示される場合がありますが、その場合は、モデルが既存のコンテンツフラグメントで既に使用されています。

    • キャンセル」を選択すると、コンソールに戻ります。

このページ