カスタム リスト定義を作成する
このタスクでは、カスタム リスト テンプレート機能を作成し、それを [ページの作成] での作成の際に選択できるリストに追加する方法を示します。カスタム リスト機能を追加するには、少なくとも以下の 3 つのファイルを用意する必要があります。
Feature.xml は、リスト テンプレートを登録します。
Elements.xml は、リスト テンプレートを [ページの作成] に追加します。
Schema.xml は、リスト スキーマを定義します。これには、コンテンツ タイプの関連付け、フィールドとビューの定義、およびフォームとツール バーの参照が含まれます。
手順
カスタム リスト定義を Web サイトに追加するには
Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATES\FEATURES 内に、SimpleListFeature などの適切な名前を付けたフォルダを作成します。
新しいフォルダ内に Feature.xml ファイルを作成し、次のようにタイトル、ID、フィーチャーの範囲、および Elements.xml ファイルの場所をこのファイル内で指定します。
<Feature Title="Simple List Feature" Id="80E23615-3145-4f43-BD5E-8524C02BD6CD" Scope="Web" xmlns="https://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="Elements.xml" /> </ElementManifests> </Feature>
上記の Id 属性の GUID プレースホルダに実際の値を入れるには、Local_Drive:\Program Files\Microsoft Visual Studio 8\Common7\Tools にある guidgen.exe を実行することにより GUID を生成します。
新しいフォルダ内に Elements.xml ファイルを作成し、次のようにリスト テンプレートと [ページの作成] に表示する情報をこのファイル内で指定します。Type には、10000 より大きく、展開内で使用されている他のカスタム リスト定義とは異なる値を指定してください。
<Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <ListTemplate Name="SimpleList" DisplayName="Simple List" Type="10001" Description="This is my simple list." BaseType="0" OnQuickLaunch="FALSE" SecurityBits="11" /> </Elements>
前の手順でリスト テンプレートに割り当てたのと同じ名前 (上の例では SimpleList) を持つサブフォルダを作成します。
新しいサブフォルダ内に、リストを定義する Schema.xml ファイルを作成します。既存のリスト機能の Schema.xml ファイルをコピーして修正し、カスタム リスト定義用の特殊フィールドを定義します。
コマンド プロンプトで、展開先にフィーチャーをインストールする次のコマンドを実行し、指定したサブサイトでフィーチャーをアクティブにします。
a. stsadm -o installfeature -filename SimpleListFeature\Feature.xml b. stsadm -o activatefeature -name SimpleListFeature -url https://Server/Site/Subsite
新しいフィーチャーをテストするには、[ページの作成] に移動し、テンプレートを使用してリストを作成します。
Schema.xml ファイル
Schema.xml ファイルの先頭付近にあるリストに必要なユーザー設定フィールドを定義します。次の例では、既定の CustomList 機能の Schema.xml ファイルをコピーして修正し、SimpleList 機能用の特殊な Choice フィールドを定義して、そのフィールドがアイテム フォームに表示されるように、Item コンテンツ タイプに追加しています。
Item コンテンツ タイプ定義をカスタマイズするには、コピーした Schema.xml ファイルの先頭付近にある以下のコンテンツ タイプ宣言を探します。
<ContentTypeRef ID="0x01">
<Folder TargetName="Item" />
</ContentTypeRef>
このコンテンツ タイプ定義を、C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\ctypes の ctypeswss.xml ファイルにある、ID が 0X01 の Item コンテンツ タイプ定義に置き換えます。
ユーザー設定フィールドの参照をコンテンツ タイプ定義に追加します。この例では、FavoriteColor を追加しています。また、既定の Folder 要素を追加して、コンテンツ タイプのリソース フォルダを指定します。「コンテンツ タイプ ID」の説明に従って、コンテンツ タイプの一意の ID を作成します。前述の手順 3. で説明した guidgen.exe を使用して、コンテンツ タイプ ID およびフィールド参照の GUID を作成します。
<List Name="SimpleList" Title="Simple List" BaseType="0" Direction="" Url="">
<MetaData>
<ContentTypes>
<!--Copy the referenced ContentType definition from ctypeswss.xml.-->
<ContentType
ID="0x010099FE4F3ACD494e30A36693F9EE65BAF2"
Name="FavoriteColor Item"
Group="$Resources:List_Content_Types"
Description="Favorite color item content type."
Version="0">
<FieldRefs>
<FieldRef
ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"
Name="Title"
Required="TRUE"
ShowInNewForm="TRUE"
ShowInEditForm="TRUE"/>
<!--Add a field reference for the custom field.-->
<FieldRef
ID="{AD22016D-BC8B-4631-A0A3-5E84C6CFA7EC}"
Name="FavoriteColor"
Required="TRUE"
ShowInNewForm="TRUE"
ShowInEditForm="TRUE"/>
</FieldRefs>
<XmlDocuments>
<XmlDocument NamespaceURI="https://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<FormTemplates xmlns="https://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<Display>ListForm</Display>
<Edit>ListForm</Edit>
<New>ListForm</New>
</FormTemplates>
</XmlDocument>
</XmlDocuments>
<!--Include the relative folder path for the content type resource folder.-->
<Folder
TargetName="Item" />
</ContentType>
<ContentTypeRef
ID="0x0120" />
</ContentTypes>
以下のように指定して、Schema.xml の ContentTypes セクションに続く空の Fields タグに、FavoriteColor Choice フィールドのフィールド定義を追加します。
<Fields>
<Field
Type="Choice"
Name="FavoriteColor"
DisplayName="Favorite Color">
<CHOICES>
<CHOICE>Red</CHOICE>
<CHOICE>Green</CHOICE>
<CHOICE>Blue</CHOICE>
</CHOICES>
</Field>
</Fields>
<Views>
...
ユーザー設定フィールドへの参照をビュー定義の ViewFields セクションに追加して、フィールドがビューに表示されるようにします。次の例では、FavoriteColor フィールド参照を標準のすべてのアイテム ビューに追加しています。
<ViewFields>
<FieldRef Name="Attachments"/>
<FieldRef Name="LinkTitle"/>
<FieldRef Name="FavoriteColor"/>
</ViewFields>