[转]使用Feature构建(之四):List Definition
原文链接:http://www.cnblogs.com/zhalin/archive/2008/01/18/1045034.html
前面三篇随笔分别讲了通过Feature来创建Site Columns 和 Content Types, 以及如何上传文件给moss站点。这一篇讲述如何创建List Definition。
从空白的xml文件开始是不明智的,我们可以copy一个系统的list definition并修改达到我们的目的。
定位到:C:\Program Files\common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES目录,我们可以看到很多文件夹,每个文件夹代表一个Feature。找到一个叫CustomList的文件夹,这个就是我们要拿来修改的。里面包含一个Feature.xml文件, 两个文件夹CustList 和ListTemplates。Custlist文件夹里面有一个Schema.xml文件, ListTemplates文件夹里有CustomList.xml文件。
拷贝整个文件夹CustomList(包括里面的内容),命名为比如MyList,并且修改里面的xml文件。
<!--Feature.xml-->
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="00BFEA71-DE22-43B2-A848-C05709900100"
Title="MyListFeature"
Description="MyDescription"
Version="1.0.0.0"
Scope="Site"
Hidden="FALSE"
DefaultResourceFile="core"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="ListTemplates\CustomList.xml" />
</ElementManifests>
</Feature>
<!--CustomList.xml-->
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ListTemplate
Name="MyList"
Type="10001"
BaseType="0"
OnQuickLaunch="TRUE"
SecurityBits="11"
Sequence="410"
DisplayName="MyDisplayName"
Description="My Description"
Image="/_layouts/images/itgen.gif"/>
</Elements>
最后一个xml文件Schema.xml内容比较多,我们要做的是:
1. 找到
<ContentTypes>
<ContentTypeRef ID="0x0120" />
</ContentTypes>
假如我们的list是基于某个ContentType的,那么在这里增加一个<ContentTypeRef> 节点。否则不要改动。
2. 找到<Fields>节点,将该list包含的fields放进去。eg:
<Fields>
<Field
Name="Title"
ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"
DisplayName="Title"
Sealed="TRUE"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="Title">
</Field>
<Field
ID="{B966A7CE-DFC3-4003-9716-663632ACA002}"
Name="CustomField1"
DisplayName="CustomField1"
Type="Text"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="CustomField1">
</Field>
<Field
ID="{EAFC93B2-F96F-4728-BB33-19C3B4311441}"
Name="CustomField2"
DisplayName="CustomField2"
Type="Text"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="CustomField2">
</Field>
<Field
ID="{D877015F-32D3-415a-AC71-79B9FA53AA47}"
Name="CustomField3"
DisplayName="CustomField3"
Type="Text"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="CustomField3">
</Field>
</Fields>
3. 找到<ViewFields>节点,将fields放进去。
<ViewFields>
<FieldRef Name="Attachments">
</FieldRef>
<FieldRef Name="LinkTitle">
</FieldRef>
<FieldRef Name="Title">
</FieldRef>
<FieldRef Name="CustomField1">
</FieldRef>
<FieldRef Name="CustomField2">
</FieldRef>
<FieldRef Name="CustomField3">
</FieldRef>
</ViewFields> 

4.Finish。 然后就可以把这个feature装上并激活(stsadm)并重启IIS。 在Site Administration > Site libraries and lists下面,按Create创建新的list, 我们的MyList应该在那里了。
更新:假如我们要同时新建一个基于这个ListTemplate的list,则可以这样:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ListInstance
Id="MyList"
Title="My List"
Description=" "
TemplateType="10001"
Url="Lists/MyList" />
</ListInstance>
</Elements>
Id=“MyList”, 指的是ListTemplate Name。
Title=“My List”, 是这个新建的List的名字。
TemplateType=“10001”, 是ListTemplate Type。
Url=“Lists/MyList",格式是Lists/<ListName>.
如果我们是要Provision Document Library的话,则XML语句稍有不同,比如:
<ListInstance
Title="My Document Library"
Description=" "
FeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101"
OnQuickLaunch="FALSE"
RootWebOnly="FALSE"
TemplateType="101"
Url="MyDocumentLibrary" />FeatureID 永远是这个值,不用管。
TemplateType也永远是101。
Url="libraryName", 注意前面不需要“Lists/”, 这个跟上面的Provision List instance有点区别。
This posting is provided "AS IS" with no warranties, and confers no rights.
浙公网安备 33010602011771号