ページを作成する場合は、テンプレートを選択する必要があります。ページテンプレートは、新しいページのベースとして使用されます。テンプレートによって、結果ページの構造、すべての初期コンテンツ、使用可能なコンポーネント(設計プロパティ)が定義されます。これには、次のようないくつかの利点があります。
template-authors
グループのメンバーである必要があります。ページテンプレートを使用すると、ページの構成要素がコンポーネント内で分離されます。UI で必要なコンポーネントの組み合わせを設定できるので、ページのバリエーションごとに新しいページコンポーネントを開発する必要はなくなります。
このドキュメントでは、
このドキュメントでは、テンプレートの作成と編集について既に理解していることを前提としています。オーサリングに関するドキュメントページテンプレートの作成を参照してください。ここでは、テンプレート作成者に公開されている編集可能テンプレートの機能について詳しく説明されています。
WKND のチュートリアルでは、例を実装してページテンプレートの使用方法を詳しく説明しているので、新しいプロジェクトでのテンプレートの設定方法を理解するのに非常に役立ちます。
ページテンプレートの作成は、主にテンプレート作成者が、テンプレートコンソールおよびテンプレートエディターを使用して行います。ここでは、そのプロセスの概要を示し、技術的なレベルでどのような処理が行われるかを説明します。
新しい編集可能テンプレートを作成する場合は、次の手順を実行します。
テンプレート用フォルダーを作成します。これは必須ではありませんが、推奨されるベストプラクティスです。
テンプレートタイプを選択します。テンプレート定義を作成するために、このタイプがコピーされます。
すぐに利用できるテンプレートタイプが用意されています。また、 独自のサイト固有のテンプレートタイプを作成する (必要に応じて)
新しいテンプレートの構造、コンテンツポリシー、初期コンテンツおよびレイアウトを設定します。
構造
テンプレート作成者が構造を定義する方法について詳しくは、ページテンプレートの作成を参照してください。
構造の技術的な詳細については、このドキュメントの構造を参照してください。
ポリシー
コンテンツポリシーでは、コンポーネントのデザインプロパティを定義します。
これらは、テンプレート(およびテンプレートを使用して作成されたページ)に適用できます。
テンプレート作成者がポリシーを定義する方法について詳しくは、ページテンプレートの作成を参照してください。
ポリシーの技術的な詳細については、このドキュメントのコンテンツポリシーを参照してください。
初期コンテンツ
テンプレート作成者が構造を定義する方法について詳しくは、ページテンプレートの作成を参照してください。
初期コンテンツの技術的な詳細については、このドキュメントの初期コンテンツを参照してください。
レイアウト
テンプレート作成者がテンプレートレイアウトを定義する方法について詳しくは、ページテンプレートの作成を参照してください。
テンプレートレイアウトの技術的な詳細については、このドキュメントのレイアウトを参照してください。
テンプレートを有効化し、特定のコンテンツツリーに対して許可します。
テンプレート作成者がテンプレートを有効にする方法について詳しくは、ページテンプレートの作成を参照してください。
テンプレートの有効化の技術的な詳細については、このドキュメントの使用するテンプレートの有効化と許可を参照してください。
テンプレートを使用してコンテンツページを作成します。
ページ作成者がテンプレートを使用してページを作成する方法について詳しくは、ページの作成と整理を参照してください。
編集可能テンプレートを使用したページ作成の技術的な詳細については、このドキュメントの作成されるコンテンツページを参照してください。
国際化する必要がある情報は、テンプレートに含めないでください。国際化のためには、コアコンポーネントのローカライゼーション機能の利用をお勧めします。
テンプレートは、ページ作成ワークフローを効率化する強力なツールです。ただし、テンプレートが多すぎると作成者が圧倒され、ページ作成がを混乱するおそれがあります。経験上、テンプレートの数を 100 未満に抑えるのがよいでしょう。
パフォーマンスに影響が及ぶ可能性があるので、1000 個を超えるテンプレートを用意することはお勧めしません。
エディタークライアントライブラリは、コンテンツページに cq.shared
名前空間が存在することを前提としています。名前空間が存在しない場合は、JavaScript エラー「Uncaught TypeError: Cannot read property 'shared' of undefined
」が発生します。
すべてのサンプルコンテンツページには cq.shared
が含まれているので、それらをベースとするコンテンツには自動的に cq.shared
が含められます。ただし、サンプルコンテンツをベースとせず、ゼロから独自のコンテンツページを作成する場合は、cq.shared
名前空間を含める必要があります。
詳しくは、クライアントサイドライブラリの使用を参照してください。
以下のフォルダーを使用してテンプレートを整理できます。
global
フォルダーはネストできますが、テンプレートコンソールで表示すると、フラット構造として表されます。
標準の AEM インスタンスでは、テンプレートコンソールに既に global
フォルダーが存在します。この中にデフォルトのテンプレートが格納されており、現在のフォルダーにポリシーやテンプレートタイプがない場合にはフォールバックとして機能します。このフォルダーにデフォルトのテンプレートを追加するか、新しいフォルダーを作成できます(推奨)。
カスタマイズしたテンプレートを格納する新しいフォルダーを作成し、global
フォルダーは使用しないことをお勧めします。
フォルダーは、admin
権限を持つユーザーが作成する必要があります。
テンプレートのタイプやポリシーは、次の優先順位に従ってすべてのフォルダーに継承されます。
/conf/global
/apps
/libs
許可されたすべてのエントリのリストが表示されます。オーバーラップする設定がある場合(path
/label
)、現在のフォルダーに最も近いインスタンスがユーザーに表示されます。
新しいフォルダーを作成するには、次のいずれかの方法を実行します。
インスタンスの新しいフォルダー(/conf の下)は、プログラムで自動的にまたは CRXDE Lite を使用して作成できます。
次の構造を使用する必要があります。
/conf
<your-folder-name> [sling:Folder]
settings [sling:Folder]
wcm [cq:Page]
templates [cq:Page]
policies [cq:Page]
その後、フォルダーのルートノードに次のプロパティを定義できます。
<your-folder-name> [sling:Folder]
jcr:title
String
作成者が新しいフォルダーにテンプレートを作成できるようにするには、標準のオーサリング権限と特権(content-authors
など)に加え、グループを割り当てて作成者に必要なアクセス権限(ACL)を定義する必要があります。
割り当てる必要があるデフォルトのグループは、template-authors
グループです。詳しくは、ACL とグループの節を参照してください。
グローバルナビゲーション/ツール/設定ブラウザーに移動します。
global
フォルダーなどの既存のフォルダーは左側に一覧表示されます。
「作成」をクリックします。
設定を作成ダイアログで、以下のフィールドを設定する必要があります。
「作成」をクリックします。
グローバルフォルダーにテンプレートを作成する場合は、設定ブラウザーでグローバルフォルダーを編集し、「編集可能なテンプレート」オプションをオンにします。ただし、これは推奨されるベストプラクティスではありません。
(CRXDE または設定ブラウザーを使用して)テンプレートフォルダーが作成されたら、セキュリティを確保するために、テンプレートフォルダーの適切なグループに ACL を定義する必要があります。
例として、WKND チュートリアルのテンプレートフォルダーを使用できます。
template-authors
グループは、テンプレートへのアクセスを管理するために使用されるグループで、AEM に標準で付属していますが空です。ユーザーは、プロジェクト/サイトのグループに追加する必要があります。
template-authors
グループは、新しいテンプレートを作成する必要があるユーザー専用です。
テンプレートの編集は非常に強力なので、正しく行わないと既存のテンプレートが壊れる場合があります。そのため、このロールには注意深く、ふさわしいユーザーだけを含めてください。
次の表に、テンプレートの編集に必要な権限を示します。
パス | ロール/グループ | 権限 |
説明 |
---|---|---|---|
/conf/<your-folder>/settings/wcm/templates |
テンプレート作成者 |
読み取り、書き込み、複製 | サイト固有の /conf スペースでテンプレートを作成、読み取り、更新、削除、複製するテンプレート作成者 |
匿名 Web ユーザー | 読み取り | 匿名 Web ユーザーは、ページのレンダリング中にテンプレートを読む必要があります | |
コンテンツ作成者 | 複製 | replicateContent 作成者は、ページをアクティブ化する際に、ページのテンプレートをアクティブ化する必要があります | |
/conf/<your-folder>/settings/wcm/policies |
Template Author |
読み取り、書き込み、複製 | サイト固有の /conf スペースでテンプレートを作成、読み取り、更新、削除、複製するテンプレート作成者 |
匿名 Web ユーザー | 読み取り | 匿名 Web ユーザーは、ページのレンダリング中にポリシーを読む必要があります | |
コンテンツ作成者 | 複製 | コンテンツ作成者は、ページをアクティブ化する際に、ページのテンプレートのポリシーをアクティブ化する必要があります | |
/conf/<site>/settings/template-types |
テンプレート作成者 | 読み取り | テンプレート作成者は、定義済みのテンプレートタイプの 1 つに基づいて新しいテンプレートを作成します。 |
匿名 Web ユーザー | なし | 匿名 Web ユーザーはテンプレートの種類にアクセスできません |
デフォルトの template-authors
グループは、プロジェクト設定のみに対応しています。この場合、template-authors
のすべてのメンバーは、すべてのテンプレートへのアクセスとそれらの作成が許可されています。より複雑な設定では、テンプレートへのアクセスを分離するために複数のテンプレート作成者グループが必要な場合、より多くのカスタムテンプレート作成者グループを作成する必要があります。 ただし、テンプレート作成者グループの権限は同じです。
新しいテンプレートの作成時には、テンプレートタイプを指定する必要があります。
テンプレートタイプは、テンプレートのためのテンプレートとなるものです。新しいテンプレートを作成する際、選択したテンプレートタイプの構造と初期コンテンツを使用して、新しいテンプレートが作成されます。
テンプレートタイプでは、以下の項目を定義できます。
AEM には、既製のテンプレートタイプがいくつか用意されています(HTML5 ページ、アダプティブフォームページなど)。
テンプレートタイプは通常、開発者が定義します。
既製のテンプレートタイプは次のフォルダーに保存されています。
/libs/settings/wcm/template-types
/libs
パス内のものは一切変更しないでください。これは、/libs
のコンテンツが AEM の更新によっていつでも上書きされる可能性があるためです。
サイト固有のテンプレートタイプは、以下に相当する場所に保存してください。
/apps/settings/wcm/template-types
カスタマイズしたテンプレートタイプの定義は、ユーザー定義フォルダー(推奨)または global
フォルダーに保存してください。次に例を示します。
/conf/<my-folder-01>/<my-folder-02>/settings/wcm/template-types
/conf/<my-folder>/settings/wcm/template-types
/conf/global/settings/wcm/template-types
テンプレートタイプは、正しいフォルダー構造 ( つまり、 /settings/wcm/...
) が含まれていない場合、テンプレートタイプが見つかりません。
他のテンプレートの基盤となるテンプレートを作成した場合、このテンプレートをテンプレートタイプとしてコピーできます。
templates
ノードからtemplate-types
テンプレートフォルダーの下の ノードにコピーします。templates
ノードから削除します。template-types
ノードの下にあるテンプレートのコピーで、すべての jcr:content
ノードから cq:template
および cq:templateType
プロパティをすべて削除します。また、GitHub で入手できる、編集可能テンプレートのサンプルを基盤として使用し、独自のテンプレートタイプを作成することもできます。
GitHub のコード
このページのコードは GitHub にあります
編集可能テンプレートの定義は、ユーザー定義フォルダー(推奨)または global
フォルダーに格納されます。次に例を示します。
/conf/<my-folder>/settings/wcm/templates
/conf/<my-folder-01>/<my-folder-02>/settings/wcm/templates
/conf/global/settings/wcm/templates
テンプレートのルートノードは、以下のスケルトン構造を持つ cq:Template
タイプです。
<template-name>
initial
jcr:content
root
<component>
...
<component>
jcr:content
@property status
policies
jcr:content
root
@property cq:policy
<component>
@property cq:policy
...
<component>
@property cq:policy
structure
jcr:content
root
<component>
...
<component>
cq:responsive
breakpoints
thumbnail.png
主な要素は以下のとおりです。
<template-name>
[initial](#initial-content)
jcr:content
[structure](#structure)
[policies](#policies)
thumbnail.png
このノードは、テンプレートのプロパティを保持します。
jcr:title
status
String
draft
、enabled
または disabled
作成されるページの構造を定義します。
新しいページの作成時に初期コンテンツ(/initial
)と統合されます。
構造に加えた変更は、そのテンプレートを使用して作成されたすべてのページに反映されます。
root
(structure/jcr:content/root
)ノードは、作成されたページで使用できるコンポーネントのリストを定義します。
editable
プロパティはに設定されます。 true
.initial
ブランチに移動されます。cq:responsive
ノードは、レスポンシブレイアウトの定義を保持します。
作成時に新しいページに表示される初期コンテンツを定義します。
jcr:content
ノードが含まれます。/structure
)と統合されます。root
ノードは、作成されたページで使用可能なコンポーネントを定義する、コンポーネントのリストを保持します。テンプレートを編集する際に、レイアウトを定義できます。これには、標準のレスポンシブレイアウトが使用されます。
コンテンツポリシーでは、コンポーネントのデザインプロパティを定義します。例えば、使用できるコンポーネントや最小/最大サイズを定義できます。これらは、テンプレート(およびテンプレートを使用して作成されたページ)に適用できます。 コンテンツポリシーは、テンプレートエディターで作成および選択できます。
root
ノード上の cq:policy
プロパティ
/conf/<your-folder>/settings/wcm/templates/<your-template>/policies/jcr:content/root
ページの段落システムのコンテンツポリシーに対する相対参照を提供します。
root
の下のコンポーネントを明示的に示すノードの cq:policy
プロパティは、個々のコンポーネントのポリシーへのリンクを提供します。
実際のポリシー定義は、次の場所に保存されます。
/conf/<your-folder>/settings/wcm/policies/wcm/foundation/components
ポリシー定義のパスは、コンポーネントのパスによって異なります。cq:policy
は、設定自体への相対参照を保持します。
ページポリシーを使用して、テンプレートまたは作成されるページで、ページ(メインの parsys)のコンテンツポリシーを定義できます。
テンプレートの有効化
テンプレートを使用する前に、次のいずれかの方法で有効にする必要があります。
テンプレートコンソールからテンプレートを有効化する。
jcr:content
ノードの status プロパティを設定する。
例:
/conf/<your-folder>/settings/wcm/templates/<your-template>/jcr:content
次のプロパティを定義します。
enabled
許可されたテンプレート
適切なページまたはサブブランチのルートページのページプロパティに対して許可されたテンプレートのパスを定義します。
プロパティを設定します。
cq:allowedTemplates
を必要なブランチの jcr:content
ノードに設定します。
例えば、次の値を使用します。
/conf/<your-folder>/settings/wcm/templates/.*
編集可能テンプレートから作成されるページには、次の特徴があります。
テンプレートの structure
と initial
を統合したサブツリーを使用して作成されます。
テンプレートおよびテンプレートタイプに保持されている情報への参照を保持します。これは、次のプロパティを持つ jcr:content
ノードを使用して行います。
cq:template
- 実際のテンプレートへの動的参照を提供します。テンプレートへの変更を実際のページに反映させることができます。
cq:templateType
- テンプレートタイプへの参照を提供します。
上の図は、テンプレート、コンテンツおよびコンポーネントの相関関係を示したものです。
/content/<my-site>/<my-page>
- テンプレートを参照して作成されるページです。コンテンツがプロセス全体を制御します。定義に従って、適切なテンプレートとコンポーネントにアクセスします。/conf/<my-folder>/settings/wcm/templates/<my-template>
- ページ設定を定義するテンプレートおよび関連するコンテンツポリシーです。/apps/<my-site>/components
- オーサー環境と公開環境の両方で、コンテンツがコンポーネントによってレンダリングされます。ページのレンダリング時:
テンプレート:
jcr:content
ノードの cq:template
プロパティが、そのページに対応するテンプレートにアクセスするために参照されます。コンポーネント:
structure/jcr:content
ツリーとページの jcr:content
ツリーを統合します。
jcr:content
ノード。 policies/jcr:content
その後、テンプレートのノードが検索されます。
cq:policy
プロパティは、実際のコンテンツポリシーを指します(すなわち、このプロパティは、そのコンポーネントのデザイン設定を保持しています)。
サイト管理インターフェイスで新しいページを作成する場合、使用可能なテンプレートのリストは、新しいページの場所と、各テンプレートで指定されている配置制限によって異なります。
次のプロパティは、新しいページをページ P
の子として配置する場合に、テンプレート T
を使用できるかどうかを決定します。これらの各プロパティは、0 個以上の正規表現を保持する複数値の文字列で、パスの照合に使用されます。
jcr:content
サブノードの P
または P
の上位ページの cq:allowedTemplates
プロパティ。
T
の allowedPaths
プロパティ。
T
の allowedParents
プロパティ。
P
のテンプレートの allowedChildren
プロパティ。
評価は次のように行われます。
P
で始まるページ階層を昇順にしているときに見つかった、最初の空でない cq:allowedTemplates
プロパティは、T
のパスと一致します。一致する値がない場合、T
は拒否されます。
T
に空でない allowedPaths
プロパティがあるものの、 P
のパスと一致する値がない場合、T
は拒否されます。
上記のプロパティの両方が空または存在しない場合、P
と同じアプリケーションに属さない限り、T
は拒否されます。T
は、T
のパスの 2 番目のレベルの名前が P
のパスの 2 番目のレベルの名前と同じである場合に限り、P
と同じアプリケーションに属します。例えば、テンプレート /apps/wknd/templates/foo
は、ページ /content/wknd
と同じアプリに属しています。
T
に空でない allowedParents
プロパティがあるものの、P
のパスと一致する値がない場合、T
は拒否されます。
P
のテンプレートに空でない allowedChildren
プロパティがあるものの、T
のパスと一致する値がない場合、T
は拒否されます。
その他すべての場合は、T
は許可されます。
以下の図は、テンプレートの評価プロセスを示しています。
AEM は、複数のプロパティをオファーして、Sites で許可されるテンプレートを制御します。ただし、組み合わせることで非常に複雑なルールになり、追跡や管理が困難になる可能性があります。
したがって、アドビでは、次の項目を定義して、単純に開始することをお勧めします。
プロパティは cq:allowedTemplates
のみ
サイトのルートにのみ
例については、WKND チュートリアルのコンテンツ /content/wknd/jcr:content
を参照してください。
プロパティ allowedPaths
、allowedParents
、allowedChildren
をテンプレートに配置して、より高度なルールを定義することもできます。ただし、可能な場合、許可されるテンプレートをさらに制限する必要がある場合は、サイトのサブセクションでさらに cq:allowedTemplates
プロパティを定義する方がはるかに簡単です。
また、ページプロパティの「詳細」タブで、作成者が cq:allowedTemplates
プロパティを更新できるという利点もあります。その他のテンプレートプロパティは、(標準)UI を使用して更新することはできないので、変更するたびに、ルールとコードのデプロイメントを管理する開発者が必要になります。
特定のページの下に子ページを作成するために使用できるテンプレートを制限するには、ページの jcr:content
ノードの cq:allowedTemplates
プロパティを使用して、子ページとして許可するテンプレートのリストを指定します。例えば、/apps/wknd/templates/page-content
リストの各値は、許可されている子ページのテンプレートへの絶対パスである必要があります。
以下を使用すると、 cq:allowedTemplates
プロパティを使用して、テンプレートの jcr:content
ノードを追加して、このテンプレートを使用するすべての新しく作成されたページにこの設定を適用します。
テンプレート階層に関する制約などをさらに追加する場合は、テンプレートの allowedParents/allowedChildren
プロパティを使用できます。その後、テンプレート T から作成されたページが、テンプレート T から作成されたページと親子である必要があることを明示的に指定できます。