現在表示中:

テンプレートはページの作成に使用され、選択した範囲内でどのコンポーネントが使用可能かを定義します。テンプレートは、作成するページと同じ構造を持つノードの階層ですが、実際のコンテンツは含まれていません。

テンプレートごとに、使用可能なコンポーネントが提示されます。

  • テンプレートはコンポーネントで構成されています。
  • コンポーネントによって使用され、アクセスが許可されるウィジェットを使用して、コンテンツがレンダリングされます。

注意:

編集可能テンプレートも使用できます。

テンプレートのプロパティおよび子ノード

テンプレートは、タイプが cq:Template のノードであり、以下のプロパティおよび子ノードが含まれます。

名前
タイプ
説明
.
 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 に含まれるすべてのもの)が与えられます。

テンプレートの構造

以下の 2 つの側面について考慮する必要があります。

  • テンプレート自体の構造

  • テンプレート使用時に作成されるコンテンツの構造

テンプレートの構造

テンプレートは cq:Template タイプのノードの下に作成されます。

さまざまなプロパティを設定できます。具体例は以下のとおりです。

  • jcr:title - テンプレートのタイトル。ページ作成時にダイアログに表示されます。

  • jcr:description - テンプレートの説明。ページ作成時にダイアログに表示されます。

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

このコンポーネントは、新しいページを作成する際に、コンテンツの構造およびデザインを定義するために使用します。

テンプレートによって作成されるコンテンツ

テンプレートは、cq:Page タイプのページを作成する際に使用します(前述したように、ページはコンポーネントの特殊タイプです)。AEM ページにはそれぞれ、構造化ノード jcr:content が 1 つずつ含まれています。その特徴は次のとおりです。

  • タイプが cq:PageContent である。

  • 定義済みのコンテンツ定義を保持する構造化ノードタイプである。

  • sling:resourceType プロパティを持ちます。このプロパティは、コンテンツのレンダリングに使用される sling スクリプトを保持するコンポーネントを参照します。

デフォルトテンプレート

AEM にはそのまま使用できるデフォルトのテンプレートが多数付属しています。テンプレートをそのまま使用したほうがよい場合もあります。その場合は、実際の Web サイトでテンプレートが使用可能であることを確認する必要があります。

例えば、AEM には、コンテンツページやホームページを含む、いくつかのテンプレートが付属しています。

タイトル コンポーネント 場所 目的
ホームページ homepage geometrixx Geometrixx ホームページテンプレート。
コンテンツページ contentpage geometrixx Geometrixx コンテンツページテンプレート。

デフォルトテンプレートの表示

リポジトリ内のすべてのテンプレートのリストを確認するには、以下の手順を実行します。

  1. CRXDE Lite で、ツールメニューを開いて、「クエリー」をクリックします。
  2. 「クエリー」タブで、
  3. タイプ」で、「XPath」を選択します。
  4. クエリー」必要情報フィールドに次の文字列を入力します。
    //element(*, cq:Template)
  5. 実行」をクリックします。結果ボックスにリストが表示されます。

多くの場合、既存のテンプレートを使用して、各自の用途に合わせて新しいテンプレートを開発します。詳しくは、ページテンプレートの開発を参照してください。

既存のテンプレートを各自の Web サイト用に有効にし、Web サイトコンソールから「Web サイト」のすぐ下にページを作成するときにページを作成ダイアログにそのテンプレートを表示する場合は、テンプレートノードの allowedPaths プロパティを /content(/.*)? に設定します。

ページテンプレートの開発

AEM ページのテンプレートは、新しいページを作成する際に使用する単なるモデルです。初期コンテンツは必要に応じて増減できます。テンプレートの役割は、編集やレンダリングが可能なように必要なプロパティ(主に sling:resourceType)が設定された、正しい初期ノード構造を作成することです。

新しいテンプレートの作成(既存のテンプレートを使用)

言うまでもなく、新しいテンプレートは完全にゼロから作成することもできますが、多くの場合は、既存のテンプレートをコピーして更新したほうが、時間と労力を節約できます。例えば、Geometrixx 内のテンプレートを使用して作業を開始できます。

既存のテンプレートに基づいた新しいテンプレートの作成手順

  1. 既存のテンプレート(作成したいテンプレートに定義が最も近いものが望ましい)を、新しいノードにコピーします。

    テンプレートは、通常、/apps/<website-name>/templates/<template-name> に格納されています。

    注意:

    使用可能なテンプレートのリストは、新しいページの場所と、各テンプレートで指定されている配置制限によって異なります。使用可能なテンプレートを参照してください。

  2. 新しいテンプレートノードの jcr:title を、新しい役割を反映するように変更します。適宜、jcr:description も更新できます。ページで使用可能なテンプレートは、適宜変更してください。

    注意:

    Web サイトコンソールから「Web サイト」のすぐ下にページを作成するときにページを作成ダイアログにテンプレートを表示する場合は、テンプレートノードの allowedPaths プロパティを /content(/.*)? に設定します。

  3. テンプレートの基礎となっているコンポーネント(テンプレート内の jcr:content ノードの sling:resourceType プロパティを参照)をコピーして、新しいインスタンスを作成します。

    コンポーネントは、通常、/apps/<website-name>/components/<component-name> に格納されています。

  4. 新しいコンポーネントの jcr:titlejcr:description を更新します。

  5. テンプレート選択リストに新しいサムネール画像を表示する場合は、thumbnail.png を置き換えます(サイズは 128 x 98 px)。

  6. テンプレートの jcr:content ノードの sling:resourceType を、新しいコンポーネントを参照するように更新します。

  7. テンプレートとその基になるコンポーネントのいずれかまたは両方に関して、機能やデザインをさらに変更します。

    注意:

    /apps/<website>/templates/<template-name> ノードに対する変更は、テンプレートインスタンスに影響します(選択リストの場合と同様)。

    /apps/<website>/components/<component-name> ノードに対する変更は、テンプレート使用時に作成されるコンテンツページに影響します。

    これで、新しいテンプレートを使用して Web サイト内にページを作成できます。

使用可能なテンプレート

サイト管理インターフェイスで新しいページを作成する場合、使用可能なテンプレートのリストは、新しいページの場所と、各テンプレートで指定されている配置制限によって異なります。

以下のプロパティによって、テンプレート T が、ページ P の子として配置される新しいページに使用可能かどうかが決まります。これらのプロパティはそれぞれ複数値の文字列であり、パスとの照合に使用される正規表現がゼロ個以上含まれています。

  • P または P の上位ページの、jcr:content サブノードの cq:allowedTemplates プロパティ。
  • TallowedPaths プロパティ。
  • TallowedParents プロパティ。
  • P のテンプレートの allowedChildren プロパティ。

評価は次のように行われます。

  • P から始まるページ階層を昇順で検索したときに最初に見つかった空でない cq:allowedTemplates プロパティが、T のパスに対して照合されます。一致する値がない場合、T は拒否されます。
  • T に空でない allowedPaths プロパティがあるものの、P のパスと一致する値がない場合、T は拒否されます。
  • 上記の両方のプロパティが空または存在しない場合、P と同じアプリケーションに所属していない限り、T は拒否されます。TP と同じアプリケーションに所属するのは、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 から作成されたページの親または子でなければならないことを明示的に指定できます。

例:既存のテンプレートを使用可能にする

テンプレートを使用可能にするには、ガイドラインに従う必要があります(使用可能なテンプレートを参照)。また、この例では、自分でテンプレートを作成したものとします。

  1. CRXDE Lite で、ページに使用するテンプレート(Newsletter テンプレートなど)に移動します。

  2. allowedPaths プロパティなど、使用可能なテンプレートで利用されるプロパティを変更します。例えば、allowedPaths/content/geometrixx-outdoors/[^/]+(/.*)?は、このテンプレートが /content/geometrixx-outdoors 以下の任意のパスで許可されることを意味します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー