[转]使用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有点区别。

posted on 2008-09-27 17:55  王丹小筑  阅读(371)  评论(0)    收藏  举报

导航