サイトとリストのコンテンツ タイプ

最終更新日: 2010年11月21日

適用対象: SharePoint Foundation 2010

この記事の内容
サイト コンテンツ タイプ
リスト コンテンツ タイプ
サイト コンテンツ タイプをリストに追加することによる影響

SharePoint Online で使用可能

コンテンツ タイプはサイト レベルで作成と管理を行います。新しいコンテンツ タイプを作成し、サイトのコンテンツ タイプ コレクションに追加すると、そのコンテンツ タイプはサイト コンテンツ タイプと呼ばれるコンテンツ タイプになります。この時点で、コンテンツ タイプは、リストとドキュメント ライブラリに追加できますが、まだ追加されていません。

サイト コンテンツ タイプをリストに追加すると、Microsoft SharePoint Foundation は、サイト コンテンツ タイプのローカル コピーを作成し、コピーをリストに追加します。このローカル インスタンスはリスト コンテンツ タイプと呼ばれ、コピー先のリストにのみ適用されます。

サイト コンテンツ タイプ

コンテンツ タイプを作成し、サイトのコンテンツ タイプ コレクションに追加すると、その新しいコンテンツ タイプは、それを作成したサイトだけでなくすべての子サイトで使用できるようになります。たとえば、サイト コンテンツ タイプをサイト コレクションのルート サイトで作成した場合、そのサイト コンテンツ タイプはサイト階層内のすべてのサイトで使用できるようになります。新しいコンテンツ タイプを階層内の下位のサイトに追加した場合、コンテンツ タイプは、そのコンテンツ タイプを追加したサイト、および階層内でそのサイトよりも下位にあるすべてのサイトで使用できます。詳細については、「コンテンツ タイプの範囲」を参照してください。

サイトで使用可能なコンテンツ タイプのリストを確認するには、ユーザー インターフェイスの [サイトの設定] を選択します。[サイトの設定] ページが表示されると、[ギャラリー] セクションを探し、[サイト コンテンツ タイプ] をクリックします。同様のリストをプログラムで取得するには、サーバー コードで SPWeb クラスをインスタンス化するか、クライアント コードで Web クラスをインスタンス化して、サイトを表すオブジェクトを作成します。次に、オブジェクトの AvailableContentTypes プロパティによって返されるコレクションを反復処理します。

AvailableContentTypes プロパティによって返されるコレクションは読み取り専用です。これは、コレクションには、現在のサイトに定義されたコンテンツ タイプだけでなく、サイト階層内の上位サイトに定義されたコンテンツ タイプも含まれるためです。新しいコンテンツ タイプの追加や既存のコンテンツ タイプの削除を行うには、変更できるコレクションを参照する必要があります。これを行うには、サイト オブジェクトの ContentTypes プロパティにアクセスします。コンテンツ タイプをこのプロパティによって返されるコレクションに追加するには、Add メソッドを呼び出します。コンテンツ タイプを削除するには、Delete メソッドを呼び出します。

サイト コンテンツ タイプの追加方法については、「[方法] サイトにコンテンツ タイプを追加する」を参照してください。サイト コンテンツ タイプの削除方法については、「Delete」メソッドを参照してください。

注意

サイト上でコンテンツ タイプを作成または管理するには、そのサイトに対する Web デザイナー アクセス権が必要です。厳密には、サイト コンテンツ タイプが存在するサイトに対するリストの管理アクセス権とページの追加とカスタマイズ アクセス権が必要です。

リスト コンテンツ タイプ

各サイトにコンテンツ タイプ コレクションがあるように、サイト内の各リストまたはライブラリにもコンテンツ タイプ コレクションがあります。コンテンツ タイプをリストまたはライブラリに追加するには、コンテンツ タイプをリストまたはライブラリのコンテンツ タイプ コレクションに追加します。

新しいリストのコンテンツ タイプ コレクションは、リスト インスタンスを準備する前にリスト定義の一部として作成できます。リスト定義の ContentTypes 要素内で、既存のサイト コンテンツ タイプを参照したり、新しいコンテンツ タイプを定義したりできます。この場合、新しいコンテンツ タイプは、同じリスト定義から作成されたリスト インスタンスのみで使用できます。新しいコンテンツ タイプはサイト コレクションに含まれないため、他のリストで使用できません。リスト定義内でリスト コンテンツ タイプを作成する方法については、「[方法] リストにコンテンツ タイプを追加する」を参照してください。

リストの準備が完了した後でも、コンテンツ タイプはリストのコンテンツ タイプ コレクションに追加できますが、追加するコンテンツ タイプはリストの範囲内にあるサイト コンテンツ タイプとして既に存在する必要があります。ユーザー インターフェイスでこれを確認するには、コンテンツ タイプが有効になっているリストの [リストの設定] ページを確認します。ページの [コンテンツ タイプ] セクションに、[既存のサイト コンテンツ タイプから追加] というラベルの付いたリンクがあります。このリンクをクリックすると、1 つのページが表示されます。このページで、使用可能なサイト コンテンツ タイプを選択し、リストのコンテンツ タイプ コレクションに追加することができます。

重要重要

サイト コンテンツ タイプをリストに追加する前に、まず、リストでコンテンツ タイプがサポートされていることを確認する必要があります。ユーザー インターフェイスでこれを行うには、[リストの設定]、[詳細設定] の順に選択します。[コンテンツ タイプの管理を許可する] で [はい] をクリックします。同じ処理をプログラムで行うには、サーバー コードで SPList オブジェクトへの参照を取得するか、クライアント コードで List オブジェクトへの参照を取得します。次に、ContentTypesEnabled プロパティを true に設定します。

サイト コンテンツ タイプをリストにプログラムで追加するには、SPWeb オブジェクト (サーバー) または Web オブジェクト (クライアント) の AvailableContentTypes プロパティによって返されたコレクションからコンテンツ タイプを選択します。次に、リスト オブジェクトの ContentTypes プロパティにアクセスし、コレクション オブジェクトの Add メソッドを呼び出して、コンテンツ タイプをリストのコレクションに追加します。詳細については、「[方法] リストにコンテンツ タイプを追加する」を参照してください。

注意

リストにコンテンツ タイプを追加するには、そのリストに対するリスト管理者権限が必要です。

ただし、重要なことは、特定のサイトで使用可能なすべてのコンテンツ タイプを、必ずしもサイト内のすべてのリストまたはライブラリに追加できるとは限らないことを理解することです。ドキュメント ライブラリに追加するコンテンツ タイプは、組み込みのドキュメント コンテンツ タイプを継承するか、ドキュメントから派生するコンテンツ タイプを継承する必要があります。逆に、リストに追加するコンテンツ タイプは、ドキュメントから派生しないでください。詳細については、「コンテンツ タイプの基本的な階層」を参照してください。

サイト コンテンツ タイプをリストに追加することによる影響

サイト コンテンツ タイプをリストまたはライブラリに追加すると、SharePoint Foundation は、そのコンテンツ タイプで参照されるすべての列のローカル コピーを作成し、リストのフィールドに追加します。詳細については、「フィールドとフィールド参照」を参照してください。

また、SharePoint Foundation は、サイト コンテンツ タイプのローカル コピーを作成し、コピーをリストのコンテンツ タイプ コレクションに追加します。新しいリスト コンテンツ タイプは、サイト コンテンツ タイプの子です。リスト コンテンツ タイプの Id プロパティの値は、その親のサイト コンテンツ タイプの Id プロパティの値とは異なりますが、それ以外では、この 2 つのコンテンツ タイプは最初は同じです。

リスト コンテンツ タイプをサイト コンテンツ タイプから派生することはよくあります。この事実は変更管理に影響します。1 つの影響として、リスト コンテンツ タイプへのカスタマイズは他のリストに容易に適用できないことがあります。たとえば、ユーザーが新しい列を追加してリスト コンテンツ タイプを編集する場合があります。この変更は、リストのコンテンツ タイプに制限されます。新しい列は、リスト コンテンツ タイプの派生元のサイト コンテンツ タイプに追加されず、その他の変更も引き継がれません。派生したコンテンツ タイプへの変更は、親のコンテンツ タイプに押し上げられません。

ただし、リスト コンテンツ タイプは、その親に加えられた変更の影響を受ける可能性があります。たとえば、ユーザーがサイト コンテンツ タイプを編集して列を追加し、そのコンテンツ タイプを継承するすべてのコンテンツ タイプを更新するように選択する場合があります。この結果、派生したサイト コンテンツ タイプとリスト コンテンツ タイプにユーザーが加えたカスタマイズが上書きされる可能性があります。親に加えられた変更を受け付けないようにコンテンツ タイプを保護することはできますが、この手順はコンテンツ タイプの管理に影響します。詳細については、「コンテンツ タイプの変更管理」を参照してください。

この理由により、ほとんどの場合で、コンテンツ タイプの変更はサイト レベルで適用し、リスト レベルでのカスタマイズを制限することをお勧めします。

コンテンツ タイプの変更を反映する方法については、「コンテンツ タイプの更新」を参照してください。サイト コンテンツ タイプが使用される場所を検出する方法を示す例については、SPContentTypeUsage.GetUsages メソッドを参照してください。

関連項目

タスク

[方法] サイトにコンテンツ タイプを追加する

[方法] リストにコンテンツ タイプを追加する

概念

コンテンツ タイプの範囲

コンテンツ タイプの作成

コンテンツ タイプの列をリストに追加する