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 站点的模板,而且这个方法更直接快速, 那为什么我们还要花大把的时间去创建一个定义文件呢?这就需要你来了解下网站定义和网站模板的优缺点.

这里有详细的文章进行介绍:http://blogs.msdn.com/b/brianwilson/archive/2008/07/13/site-definitions-versus-site-templates-and-deciding-on-the-correct-customization-approach.aspx 

 

怎样创建网站定义呢? 如果你根据为什么介绍的理由选择了网站定义的方式,那你就需要了解下面的内容.

下面的内容介绍如何创建一个简单的网站定义, 之所以说简单, 是因为这个定义的文件里,包含了最少的站点元素和站点内容.

 

一个网站定义至少包含以下内容:

一个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". 并点击完成. 项目目录如下:

 

我们只创建一个简单的网站定义, 因此我们不对项目做任何更改, 但要分析下项目下的几个文件.

  1. Webtemp_*.xml 文件, 这个文件定义了当前网站定义下有多少个网站模板, 每个模板的名字,描述等. 默认只包含一个站点模板.

首先改掉模版的名字为"SDDemo", 为了不与SharePoint 自带的网站定义冲突,我们把ID改为大于10000的数字, 比如10005

Title: Demo 1

Description: this is a simple site definition example.

  1. 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">.

 

posted @ 2011-09-13 15:57  懒牛  阅读(921)  评论(0编辑  收藏  举报