テンプレートは、AEM の様々な場面で使用されます。
- ページの作成時にテンプレートを選択します。このテンプレートは、新しいページのベースとして使用されます。テンプレートは、作成されるページの構造、初期コンテンツおよび使用可能なコンポーネント(デザインプロパティ)を定義します。
- コンテンツフラグメントの作成時にテンプレートを選択します。このテンプレートは、構造、初期要素およびバリエーションを定義します。
注意:
新しいページを作成するときにテンプレートを使用する際、ページ編集者にとって見た目的な違いはなく、またどちらのタイプのテンプレートを使用しているかについての表示もありません。
編集可能テンプレートには、次の特徴があります。
- 作成者が作成および編集できます。
- テンプレートを使用して作成される任意のページで、以下の項目を定義できます。
- 構造
- 初期コンテンツ
- コンテンツポリシー
- 新しいページの作成後も、そのページとテンプレートの間に動的接続が維持されます。つまり、テンプレートの構造に対する変更は、そのテンプレートを使用して作成されるすべてのページに反映されます(初期コンテンツに対する変更は反映されません)。
- デザインプロパティを保持するには、テンプレートエディターから編集できるコンテンツポリシーを使用します(ページエディター内のデザインモードは使用しません)。
- /conf に保存されます。
- 詳しくは、編集可能テンプレートを参照してください。
サイト管理インターフェイスで新しいページを作成する場合、使用可能なテンプレートのリストは、新しいページの場所と、各テンプレートで指定されている配置制限によって異なります。
以下のプロパティによって、テンプレート T が、ページ P の子として配置される新しいページに使用可能かどうかが決まります。これらのプロパティはそれぞれ複数値の文字列であり、パスとの照合に使用される正規表現がゼロ個以上含まれています。
- P または P の上位ページの、jcr:content サブノードの cq:allowedTemplates プロパティ。
- T の allowedPaths プロパティ。
- T の allowedParents プロパティ。
- P のテンプレートの allowedChildren プロパティ。
評価は次のようにおこなわれます。
- P から始まるページ階層を昇順で検索したときに最初に見つかった空でない cq:allowedTemplates プロパティが、T のパスに対して照合されます。一致する値がない場合、T は拒否されます。
- T に空でない allowedPaths プロパティがあるものの、P のパスと一致する値がない場合、T は拒否されます。
- 上述の両方のプロパティが空または存在しない場合、P と同じアプリケーションに所属していない限り、T は拒否されます。T が P と同じアプリケーションに所属するのは、T のパスの第 2 レベルの名前が P のパスの第 2 レベルの名前と同じ場合のみです。例えば、テンプレート /apps/geometrixx/templates/foo は、ページ /content/geometrixx と同じアプリケーションに所属します。
- T に空でない allowedParents プロパティがあるものの、P のパスと一致する値がない場合、T は拒否されます。
- P のテンプレートに空でない allowedChildren プロパティがあるものの、T のパスと一致する値がない場合、T は拒否されます。
- その他すべての場合は、T は許可されます。
以下の図は、テンプレートの評価プロセスを示しています。

特定のページの下に子ページを使用する際に使用できるテンプレートを制限するには、そのページの jcr:content ノードの cq:allowedTemplates プロパティを使用して、子ページとして許可するテンプレートのリストを指定します。リスト内の値は、許可される子ページのテンプレートに対する絶対パスを指定する必要があります。例えば /apps/geometrixx/templates/contentpage などです。
テンプレートの jcr:content ノードの cq:allowedTemplates プロパティを使用すると、このテンプレートを使用するすべての新規作成ページにこの設定を適用できます。
制約を追加する場合(テンプレート階層に関してなど)は、テンプレートの allowedParents/allowedChildren プロパティを使用できます。その後、テンプレート T から作成されたページはテンプレート T から作成されたページの親または子でなければならないことを明示的に指定できます。
詳しくは、コンテンツフラグメントテンプレートを参照してください。