一、概述:
1、基于站点定义创建完站点之后也不能将相关站点定义删除,站点集或站点穿件后都会对相关的站点定义文件有以来,删除将导致功能无法正常运行.
2、1033\XML下的XML文件是站点定义清单,具体的站点定义模版在Template\SiteTemplates下的文件中定义,通过ID和ConfigurationID进行关联
3、每个站点定义模版必须有一个ONET.XML文件
4、不建议使用自定义的站点定义,在迁移时如果没有将此模版部署,会导致无法使用的问题,只作为一种技术讨论
二、结构分析
Sharepoint根目录\1033\XML下的XML文件以WEBTEMPD为例:
<Templates xmlns:ows="Microsoft SharePoint">
<Template Name="GLOBAL" SetupPath="global" ID="0">
<Configuration ID="0" Title="Global template" Hidden="TRUE" ImageUrl="" Description="This template is used for initializing a new site." > </Configuration>
</Template>
<Template Name="STS" ID="1">
<Configuration ID="0" Title="Team Site" Hidden="FALSE" ImageUrl="/_layouts/images/stts.png" Description="A site for teams to quickly organize, author, and share information. It provides a document library, and lists for managing announcements, calendar items, tasks, and discussions." DisplayCategory="Collaboration" > </Configuration>
<Configuration ID="1" Title="Blank Site" Hidden="FALSE" ImageUrl="/_layouts/images/stbs.png" Description="A blank site for you to customize based on your requirements." DisplayCategory="Collaboration" AllowGlobalFeatureAssociations="False" > </Configuration>
<Configuration ID="2" Title="Document Workspace" Hidden="FALSE" ImageUrl="/_layouts/images/stdw.png" Description="A site for colleagues to work together on a document. It provides a document library for storing the primary document and supporting files, a tasks list for assigning to-do items, and a links list for resources related to the document." DisplayCategory="Collaboration" > </Configuration>
</Template>
第一个Template定义GLOBAL模版,在创建网站是先根据GLOBAL站点定义穿件基本的站点元素,之后根据指定的站点定义创建其他元素,Global站点定义的ONET.XML位于\Template\GLOBAR\XML下。
根元素Project下面包含NavVars、ListTemplates、BaseTypes、Configurations以及Modules元素,
ListTemplates元素包含了对系统列表和库的定义,比如母版页库、解决方案库、用户列表、Web部件库等;
BaseTypes节点定义了支持的基础类型泛型列表、文档库、讨论版和Issue列表;
Configuration节中定义了Lists(创建时要创建的列表)、Modules元素(为站点中生成相应的文件,如引入基础母版页等)
第二个Template定以STS模版,在STS中包含三个站点模版:Team Site、Blank Site、Document Workspace
在Template\SiteTemplates文件夹下有对应的STS站点模版文件夹
XML文件夹中有一个ONET.XML定义文件,default.aspx定义Team Site、Blank Site的主页,defaultdws.aspx定义Document Workspace的主页
ONET.XML:
<Project Title="$Resources:onet_TeamWebSite;" Revision="2" ListDir="$Resources:core,lists_Folder;" xmlns:ows="Microsoft SharePoint" UIVersion="4">
<NavBars> 定义导航
</NavBars>
<ListTemplates> 定义List模版,向后兼容,通常不使用
</ListTemplates>
<DocumentTemplates> 定义Document模版,向后兼容,通常不使用
</DocumentTemplates>
<Configurations> 定义创建站点时的列表、Feature等的定义
</Configurations>
<Modules> 在站点中生成相应的文件
</Modules>
<ServerEmailFooter>$Resources:ServerEmailFooter;</ServerEmailFooter>
站点定义的结构基本分析完了,接下来我们新建一个站点定义
三、测试代码:
(一)在VS2010中新建
(二)新建后,vs会帮我们建好定义文件
在onet.xml中添加以下代码:
<Project Title="SiteDefinitionDemo" Revision="2" ListDir="" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
<NavBars>
<NavBar Name="$Resources:core,category_Documents;" Prefix="<table border='0' cellpadding='4' cellspacing='0'>" Body="<tr><td><table border='0' cellpadding='0' cellspacing='0'><tr><td><img src='/_layouts/images/blank.gif' id='100' alt='' border='0'> </td><td valign='top'><a id='onetleftnavbar#LABEL_ID#' href='#URL#'>#LABEL#</td></tr></table></td></tr>" Suffix="</table>" ID="1004" />
<NavBar Name="$Resources:core,category_Lists;" Prefix="<table border='0' cellpadding='4' cellspacing='0'>" Body="<tr><td><table border='0' cellpadding='0' cellspacing='0'><tr><td><img src='/_layouts/images/blank.gif' id='100' alt='' border='0'> </td><td valign='top'><a id='onetleftnavbar#LABEL_ID#' href='#URL#'>#LABEL#</td></tr></table></td></tr>" Suffix="</table>" ID="1003" />
</NavBars>
<Configurations>
<Configuration ID="0" Name="SiteDefinitionDemo">
<Lists>
<List FeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101" Type="101" Title="$Resources:core,shareddocuments_Title;" Url="$Resources:core,shareddocuments_Folder;" QuickLaunchUrl="$Resources:core,shareddocuments_Folder;/Forms/AllItems.aspx" />
<List FeatureId="00BFEA71-6A49-43FA-B535-D15C05500108" Type="108" Title="$Resources:core,discussions_Title;" Url="$Resources:core,lists_Folder;/$Resources:core,discussions_Folder;" QuickLaunchUrl="$Resources:core,lists_Folder;/$Resources:core,discussions_Folder;/AllItems.aspx" EmailAlias="$Resources:core,discussions_EmailAlias;" />
<List FeatureId="00BFEA71-D1CE-42de-9C63-A44004CE0104" Type="104" Title="$Resources:core,announceList;" Url="$Resources:core,lists_Folder;/$Resources:core,announce_Folder;">
<Data>
<Rows>
<Row>
<Field Name="Title">$Resources:onetid11;</Field>
<Field Name="Body">$Resources:onetid12;</Field>
<Field Name="Expires"><ows:TodayISO/></Field>
</Row>
</Rows>
</Data>
</List>
</Lists>
<SiteFeatures>
<!-- BasicWebParts Feature -->
<Feature ID="FDE5D850-671E-4143-950A-87B473922DC7" />
</SiteFeatures>
<WebFeatures>
<!-- TeamCollab Feature 不加也可以-->
<Feature ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5" />
</WebFeatures>
<Modules>
<Module Name="Default" />
</Modules>
</Configuration>
</Configurations>
<Modules>
<Module Name="Default" Url="" Path="">
<File Url="default.aspx">
</File>
</Module>
</Modules>
</Project>
1、在代码中,<NavBars>节定义了在页面快速导航中显示文档库和列表,如果不添加,则不在页面中显示。
2、在<Lists>中创建3个列表:共享文档(shareddocuments),讨论区(discussions),通知(announceList)。在创建网站的同时会创建者三个列表。
3、创建通知列表同时定义了1条数据,用<Data>定义。
4、SiteFeatures和WebFeatures中定义了要激活的Feature。
5、Modules中创建站点主页
(三)部署解决方案
部署解决方案后,手动重启IIS,进入网站,点击新建站点,在自定义中找到我们定义的网站模版并创建
创建完成效果: