データ定義とテンプレートの概要
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
ウェブサイトを立ち上げる最初のステップは、データ構造を作成することです。Sitecoreでデータ構造を作成するとは、データテンプレートの作成、標準値の定義、挿入オプションの割り当て、コンテンツ項目の作成を指します。そして、これを行うことはSitecoreにおける基本的な概念の一つ、すなわちテンプレートに関わっています。テンプレートはコンテンツの 提示 とは関係ありません。代わりに、コンテンツの 構造 を決定するものです。テンプレートとは、他のアイテムの構造と動作の両方を定義する項目です。Sitecoreには以下のような種類のテンプレートがあります:
-
データテンプレートは、データの入力方法を制御するために使われるフィールドを定義します。それらは各項目を構成する正確なフィールドセクション、フィールドタイプ、フィールド名を決定します。言い換えれば、データテンプレートはアイテムを構築する枠組みを形成します。
Sitecoreはコンテンツツリー内のすべての項目にデータテンプレートを関連付けます。フィールド タイプ がユーザーに表示される編集コントロールを決定し、データベースに保存される生の値も含みます。
-
ブランチテンプレートは、単一のアイテムではなく一連のアイテムを作成できるようにします。ブランチテンプレートは、ブランチテンプレートの定義アイテムで構成され、単一のアイテム、階層状のアイテム、または複数の階層を含むことができます。ブランチテンプレートでは、Sitecoreはブランチテンプレート定義アイテムの下にある項目を複製し、フィールド値を含めて、アイテム名やフィールド値のトークンを解決します。
-
コマンドテンプレートは、あらかじめ定義された構造ではなくロジックを使ってアイテムを挿入できるようにします。
Sitecoreのもう一つの重要な概念はテンプレート継承です。テンプレートは1つ以上の ベーステンプレートから継承します。例えば、データテンプレートはベーステンプレートからセクションやフィールドを継承します。データテンプレートが他のテンプレートから継承すると、すべてのフィールドが統合されます。テンプレート継承に関するガイドラインはHelixのドキュメントで、テンプレートの階層構造の例はTemplate Inheritance exampleで確認できます。
すべてのデータテンプレートは 標準テンプレートから継承します。標準テンプレートにはフィールドは含まれていませんが、他のいくつかのテンプレートから継承しています。標準テンプレートに継承されたすべてのフィールドは、例えば__Ribbonや__Trackingなどのアンダースコアで始まります。
!重要すべてのテンプレートはCoreデータベースではなくマスターデータベースで作成しなければなりません。
推奨される実践
テンプレートを使う際は、以下のベストプラクティスを念頭に置いてください。
- サイトごとにデータテンプレートを整理してください。コンテンツツリー(sitecore/Templates)で、各サイトごとにフォルダを作成し、テンプレートを追加します。
- わかりやすいデータテンプレート名を使い、コンテンツ作成者が新しい項目を挿入し、その名前を見てテンプレートの目的を理解できるようにします。同様に、類似したフィールドをまとめたフィールドセクションにも意味のある名前を付けましょう。
- フィールドやフィールドセクションには 固有の 名前を付けてください。これらは継承されたベーステンプレートからマージされているからです。
- コンテンツ作成者が見えるデータテンプレートにアイコンを割り当て、アイテムがどの種類のデータテンプレートから作成されたかを簡単に特定できるようにします。同様に、フィールドセクションにもアイコンを割り当てます。
- テンプレート継承を使って重複を減らすことができます。複数のデータテンプレート間で共有されているフィールドは、ベーステンプレートにまとめて継承できます。例えば、すべてのページにはページタイトル(ブラウザのタイトルバーに表示される)とメタ説明が設定されます。これらのフィールドはページメタデータとしてまとめることができます。同様に、ほとんどのページには要約情報とメインコンテンツがあります。
- 冗長なフィールド(例えば、データテンプレートで継承されているが一度も使われないフィールド)は避けましょう。
- 特定のフィールド名(例えば単にHeadingではなくPage Summary Heading)を定義してください。フィールドコンテンツをレンダリングするすべてのヘルパーやコントロールは最終的に、FieldRendererパイプラインを通過し、フィールド名がIDではなく名前を必要とします。
- フィールド名は場所ではなくコンテンツタイプに基づいて定義してください。なぜなら、コンテンツはしばしば再利用され、必ずしも一つの場所だけに現れるわけではないからです。
- フィールドを翻訳する必要があり、各バージョンを追跡する必要がある場合は、そのフィールドをバージョン付きフィールドにしてください。フィールドを翻訳する必要があるが、各バージョンを追跡する必要がない場合は、フィールドをバージョンなしフィールドにしてください。
- 複数のフィールドが類似した内容を使用している場合、フィールド トークン ( $name、 $id、 $timeなど)を使用します。トークンはデータテンプレートの標準値で定義され、対象フィールドがバージョン管理または非バージョン化されている場合、すべての言語で定義されなければなりません。トークンはアイテムが作成された瞬間に置き換えられます。
- フィールドのデフォルト値を標準値に設定します。標準値を使えば、デフォルトデータが新たに作成されたアイテムに自動的に挿入されることを確認できます。標準値は、既存のアイテムのnullフィールドを埋めたり、新たに作成されたアイテムにデータを埋めるデフォルトのことです。