SharePoint 2010 创建简单的网站定义(Site Definition)
介绍任何一个新的产品和技术,亦或者一个用法都要经过一个标准的流程进行认知:是什么,为什么,怎么做.
网站定义是什么?,微软官方对网站定义(Site Definition)的解释:
Contains a server-side collection of files that defines the structure of one or more site templates.
从定以我们可以看出,网站定义就是几个集合,这个集合包含aspx页面和一些XML文件, 这些组合在一起就定义了一个或者多个SharePoint 站点的结构.
为什么用网站定义? 我们同样可以通过Site Template 去定义SharePoint 站点的模板,而且这个方法更直接快速, 那为什么我们还要花大把的时间去创建一个定义文件呢?这就需要你来了解下网站定义和网站模板的优缺点.
怎样创建网站定义呢? 如果你根据为什么介绍的理由选择了网站定义的方式,那你就需要了解下面的内容.
下面的内容介绍如何创建一个简单的网站定义, 之所以说简单, 是因为这个定义的文件里,包含了最少的站点元素和站点内容.
一个网站定义至少包含以下内容:
一个webtemp.xml (%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\12\TEMPLATE\1033\XML ),可以包含一个或者多个站点模板.里面定义了站点的名称,图标, 描述.
一个单独的文件目录(%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions \12\TEMPLATE\SiteTemplates ) : 包含这个网站定义的所有文件, 列表,feature等等.
了解了网站定义需要包含的内容,我们就开始着手创建一个简单的网站定义:
打开Visual Studio 2010, 创建一个Site Definition 项目并命名为Demo.SiteDefinition. 选择"deploy as farm solution". 并点击完成. 项目目录如下:
我们只创建一个简单的网站定义, 因此我们不对项目做任何更改, 但要分析下项目下的几个文件.
- Webtemp_*.xml 文件, 这个文件定义了当前网站定义下有多少个网站模板, 每个模板的名字,描述等. 默认只包含一个站点模板.
首先改掉模版的名字为"SDDemo", 为了不与SharePoint 自带的网站定义冲突,我们把ID改为大于10000的数字, 比如10005
Title: Demo 1
Description: this is a simple site definition example.
- Onet.xml
Lists:站点默认包含的列表, 比如打开Team site 网站定义, 你可以看到默认的列表有Shared Document, Task list, calendar, LINKS等默认列表, 我们只简单添加一个列表
<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" />
</Lists>
SiteFeatures: 网站集应用
WebFeatures: 站点应用
点击保存, 分别把文件拷到相应的目录, 当然也可以同WSP 直接部署.
看下效果:
如果你用自己创建的site definition 创建站点时报一下错误"
"Failed to instantiate file "default.master" from module "DefaultMasterPage": Source path "default.master" not found."
请确认template 的name属性是否匹配你Folder的名字.并须一致.
<Template Name="Demo.SiteDefinition" ID="10005">.