テンプレートはページの作成に使用され、選択した範囲内でどのコンポーネントが使用可能かを定義します。テンプレートは、作成するページと同じ構造を持つノードの階層ですが、実際のコンテンツは含まれていません。
- テンプレートはコンポーネントで構成されています。
- コンポーネントによって使用され、アクセスが許可されるウィジェットを使用して、コンテンツがレンダリングされます。
注意:
編集可能テンプレートも使用できます。
名前 |
タイプ |
説明 |
. |
cq:Template | 現在のテンプレート。テンプレートのノードタイプは cq:Template です。 |
allowedChildren | String[] | このテンプレートの子となることが許可されているテンプレートのパス。 |
allowedParents | String[] | このテンプレートの親となることが許可されているテンプレートのパス。 |
allowedPaths | String[] | このテンプレートをベースとすることが許可されているページのパス。 |
jcr:created | Date | テンプレートの作成日。 |
jcr:description | String | テンプレートの説明。 |
jcr:title | String | テンプレートのタイトル。 |
ranking | Long | テンプレートのランク。ユーザーインターフェイスにテンプレートを表示する際に使用します。 |
jcr:content | cq:PageContent | テンプレートのコンテンツを含むノード。 |
thumbnail.png | nt:file | テンプレートのサムネール。 |
icon.png | nt:file | テンプレートのアイコン。 |
テンプレートはページの基礎です。
ページを作成するには、テンプレート(ノードツリー /apps/<myapp>/template/<mytemplate>)をサイトツリーの対応する位置にコピーする必要があります。「Web サイト」タブを使用してページを作成する場合も、この処理が行われています。
このコピー処理により、ページには、初期コンテンツ(通常はトップレベルコンテンツのみ)と sling:resourceType プロパティ、ページのレンダリングに使用するページコンポーネントのパス(子ノード jcr:content に含まれるすべてのもの)が与えられます。

このノードには jcr:content(cq:PageContent)ノードが含まれており、結果ページのコンテンツノードの基礎として使用できます。これが、sling:resourceType を使用して、新しいページの実際のコンテンツをレンダリングする際に使用するコンポーネントを参照します。


テンプレートは、cq:Page タイプのページを作成する際に使用します(前述したように、ページはコンポーネントの特殊タイプです)。AEM ページにはそれぞれ、構造化ノード jcr:content が 1 つずつ含まれています。その特徴は次のとおりです。
タイプが cq:PageContent である。
定義済みのコンテンツ定義を保持する構造化ノードタイプである。
sling:resourceType プロパティを持ちます。このプロパティは、コンテンツのレンダリングに使用される sling スクリプトを保持するコンポーネントを参照します。
AEM にはそのまま使用できるデフォルトのテンプレートが多数付属しています。テンプレートをそのまま使用したほうがよい場合もあります。その場合は、実際の Web サイトでテンプレートが使用可能であることを確認する必要があります。
タイトル | コンポーネント | 場所 | 目的 |
ホームページ | homepage | geometrixx | Geometrixx ホームページテンプレート。 |
コンテンツページ | contentpage | geometrixx | Geometrixx コンテンツページテンプレート。 |
リポジトリ内のすべてのテンプレートのリストを確認するには、以下の手順を実行します。
- CRXDE Lite で、ツールメニューを開いて、「クエリー」をクリックします。
- 「クエリー」タブで、
- 「タイプ」で、「XPath」を選択します。
- 「クエリー」必要情報フィールドに次の文字列を入力します。
//element(*, cq:Template) - 「実行」をクリックします。結果ボックスにリストが表示されます。
多くの場合、既存のテンプレートを使用して、各自の用途に合わせて新しいテンプレートを開発します。詳しくは、ページテンプレートの開発を参照してください。
既存のテンプレートを各自の Web サイト用に有効にし、Web サイトコンソールから「Web サイト」のすぐ下にページを作成するときにページを作成ダイアログにそのテンプレートを表示する場合は、テンプレートノードの allowedPaths プロパティを /content(/.*)? に設定します。
AEM ページのテンプレートは、新しいページを作成する際に使用する単なるモデルです。初期コンテンツは必要に応じて増減できます。テンプレートの役割は、編集やレンダリングが可能なように必要なプロパティ(主に sling:resourceType)が設定された、正しい初期ノード構造を作成することです。
言うまでもなく、新しいテンプレートは完全にゼロから作成することもできますが、多くの場合は、既存のテンプレートをコピーして更新したほうが、時間と労力を節約できます。例えば、Geometrixx 内のテンプレートを使用して作業を開始できます。
既存のテンプレートに基づいた新しいテンプレートの作成手順
サイト管理インターフェイスで新しいページを作成する場合、使用可能なテンプレートのリストは、新しいページの場所と、各テンプレートで指定されている配置制限によって異なります。
以下のプロパティによって、テンプレート 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 から作成されたページの親または子でなければならないことを明示的に指定できます。
テンプレートを使用可能にするには、ガイドラインに従う必要があります(使用可能なテンプレートを参照)。また、この例では、自分でテンプレートを作成したものとします。
-
allowedPaths プロパティなど、使用可能なテンプレートで利用されるプロパティを変更します。例えば、allowedPaths: /content/geometrixx-outdoors/[^/]+(/.*)?は、このテンプレートが /content/geometrixx-outdoors 以下の任意のパスで許可されることを意味します。