リストにコンテンツ タイプを追加する
ユーザーがコンテンツ タイプをプロビジョニングするごとに、そのコンテンツ タイプが既定で Windows SharePoint Services によりリストに格納されるようにするため、リスト定義に含まれるコンテンツ タイプを参照できます。
リスト定義はフィーチャーに含めることができます。詳細については、「フィーチャーを操作する」を参照してください。
ユーザーがリストをプロビジョニングした後は、Windows SharePoint Services オブジェクト モデルを利用して、そのリストにコンテンツ タイプを追加できます。
リスト定義内におけるコンテンツ タイプの指定
リスト定義にコンテンツ タイプを追加するには、ContentTypes 要素をリスト スキーマに追加します。ContentTypes 要素には、ContentTypeRef 要素のコレクションが格納されます。各 ContentTypeRef 要素は、指定されたタイプの新規リストをユーザーがプロビジョニングするごとに、Windows SharePoint Services がリスト コンテンツ タイプとしてリストにローカルにコピーするサイト コンテンツ タイプを指定します。ContentTypeRef 要素には、ID という単一の属性が格納されます。この属性は、コンテンツ タイプ ID に設定します。
参照するサイト コンテンツ タイプは、リストの範囲内に存在する必要があります。つまり、サイト階層内において同じかそれより上のサイト レベルで宣言する必要があります。コンテンツ タイプの範囲の詳細については、「コンテンツ タイプの範囲」を参照してください。
List 要素には AllowMultipleContentTypes という属性が含まれます。リスト上で複数のコンテンツ タイプをプロビジョニングするには、この属性を TRUE に設定する必要があります。さらに、List 要素には EnableContentTypes という属性が含まれます。リスト上で Windows SharePoint Services が複数のコンテンツ タイプを表示するには、この属性を TRUE に設定する必要があります。
注意
Windows SharePoint Services は、リストをプロビジョニングするとき、リストの基本タイプ スキーマ内またはリスト スキーマ内で宣言されている列だけをプロビジョニングします。リスト スキーマ内のサイト コンテンツ タイプを参照する場合で、リストの基本タイプ スキーマ内またはリスト スキーマ内に含まれていないサイト内の列を、コンテンツ タイプが参照している場合、これらの列はリスト上でプロビジョニングされません。Windows SharePoint Services によってこれらの列がリスト上でプロビジョニングされるようにするには、これらの列をリスト スキーマに含める必要もあります。
サイト内の列の詳細については、「列について」を参照してください。
コンテンツ タイプをリスト定義に追加するには
リスト定義 XML 内で、ContentType 要素を ContentTypes 要素に追加します。
ContentTypes 要素の ID 属性を、リストに含めたいコンテンツ タイプのコンテンツ タイプ ID に設定します。
プロビジョニングされたリストへのコンテンツ タイプの追加
Windows SharePoint Services オブジェクト モデルを利用して、コンテンツ タイプをプロビジョニングされたリストに追加できます。
コンテンツ タイプをリスト定義に追加するには
AvailableContentTypes メソッドを使用して、リストが配置されているサイトで利用可能なコンテンツ タイプにアクセスします。このメソッドは SPContentTypeCollection オブジェクトを返します。
SPContentType というタイプのオブジェクト変数を宣言し、この変数を、リストに追加したいサイト コンテンツ タイプを表すコレクション内の SPContentType オブジェクトと同じ値に設定します。
ContentTypes プロパティを使用して、指定したリスト上の、リスト コンテンツ タイプのコレクションにアクセスします。このメソッドは SPContentTypeCollection オブジェクトを返します。
Add メソッドを使用して、リスト コンテンツ タイプ コレクションに SPContentType オブジェクトを追加します。
追加するサイト コンテンツ タイプは、リストの範囲内に存在する必要があります。つまり、サイト階層内において同じかそれより上のサイト レベルで宣言する必要があります。コンテンツ タイプの範囲の詳細については、「コンテンツ タイプの範囲」を参照してください。
オブジェクト モデルを使用するリストにサイト コンテンツ タイプを追加する場合、そのコンテンツ タイプが格納する列で、リストにまだ存在しない列が Windows SharePoint Services によって自動的に追加されます。これは、リスト スキーマにコンテンツ タイプを追加する場合と対照的です。リスト スキーマに追加する場合は、リスト スキーマに明示的に列を追加して Windows SharePoint Services が列をプロビジョニングするようにする必要があります。