博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义SharePoint新网站创建过程(1)
阅读量:5810 次
发布时间:2019-06-18

本文共 2752 字,大约阅读时间需要 9 分钟。

为什么要自定义一个SharePoint新网站的创建过程呢?作用很多。其中之一就是,我们创建了一个新的SharePoint应用组件,然后希望SharePoint管理员在创建一个SharePoint新网站的时候,就可以在那个新网站中使用我们开发的新应用组件。 

SharePoint Server 2007本身也利用了这种方式。比如,如果用户希望使用Records Management相关的功能,他可以使用“记录中心”这个网站模板来创建一个新网站。在新网站中,界面和内容会根据Records Management的需求做好了一些定制,用户可以直接基于新网站中的预制内容,开始自己的工作。 
 

  

要自定义一个SharePoint新网站创建过程有两种方式: 
1、Feature Stapling 
2、Custom Site Definition + Site Provisioning Engine 
SharePoint产品自身大量使用了第二种做法。我们也可以模仿它那样,创建一个定制的Site Definition,然后让用户在上图所示的创建新网站的时候,选择我们创建的Site Definition即可。创建一个定制的Site Definition是一件繁琐的活儿,特别是如果还需要利用SharePoint Provisioning Engine来做一些更“高级”的调整。幸好SharePoint Solution Generator一定程度上减少了创建Site Definition的复杂度。 
但我个人更建议你使用第一种方法。:) 所以今天我先介绍Feature Stapling,第二种方法在后续的文章中再介绍。 
Feature Stapling,也叫Feature/Site Template Association,它的作用是将某个Feature与某个网站模板关联起来,而不需要这个网站模板定义本身包含这个Feature。比如,在系统中有“工作组网站”这样一个Site Definition,我们希望这个模板能包含我们自己开发的一个“Feature XYZ”,但是又不想直接到磁盘上去改动“工作组网站”这个Site Definition。除了使用上面说的第二个办法(也就是在“工作组网站”的基础上添加一个新的比如“工作组网站 with Feature XYZ”的Site Definition),用Feature Stapling就能将我们的这个“Feature XYZ”与“工作组网站”Site Definition关联起来,就好象“工作组网站”Site Definition已经包含了“Feature XYZ”一样。 
要实现Feature Stapling,需要创建至少2个Feature。第1个Feature叫做Feature Stapler,也就是用来将真正完成功能的Feature与网站模板进行关联的一个Feature,第2个也就是用来完成功能的Feature本身了(也就是上文所说的“Feature XYZ”)。 
由于Feature有事件处理程序机制,所以,通过给第2个完成实际功能的Feature添加事件处理程序,我们实际上是能利用Feature Stapling完成某些很复杂的事情的。例如,给网站中添加几个List、为网站添加一些预定义的用户。 
曾经有人问过我这样一个问题,如何修改所有用户的“我的网站”的样式?比如,在“我的网站”首页中增加自己开发的Web Part,或者干脆将“我的网站”完整的换成自己想要的样子?Feature Stapling就是一个很好的解决之道,我们只需要将一个(或多个)Feature关联到“我的网站”所使用的网站模板,这样,当每个用户第一次访问“我的网站”并为其创建“我的网站”时,关联的Feature就可以通过它的事件处理程序来完成工作,达到我们想要的效果。 
接下来是我最喜欢的实例示范环节。:) 
Demo场景是,当用户使用SharePoint内置的“工作组网站”这个模板创建一个新网站时,希望在这个新网站内能自动出现一个联系人列表,并且里面已经包含了一些原始数据。 
首先,创建Feature Stapler: 
feature.xml: 
<Feature Id="06dbfca3-a041-4c50-aea3-7dd8561b48f9" Title="STS#0 Feature Stapling" Scope="Farm" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="
  <ElementManifests> 
    <ElementManifest Location="STS0FeatureStapling\elements.xml"/> 
  </ElementManifests> 
</Feature>
 
elements.xml: 
<Elements Id="55B76996-827F-4879-B0D1-BADDCCDC8AAC" xmlns="
  <FeatureSiteTemplateAssociation Id="1d68910c-b227-4cba-bfa7-87896d812dcf" TemplateName="STS#0" /> 
</Elements>

然后是实际用来完成工作的Feature: 
feature.xml: 
<Feature Id="1d68910c-b227-4cba-bfa7-87896d812dcf" 
         Title="Team Site Init" 
         Scope="Web" 
         Version="1.0.0.0" 
         ActivateOnDefault="FALSE" 
         Hidden="FALSE" 
         DefaultResourceFile="core" 
         ReceiverAssembly="FeatureStaplingSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" 
         ReceiverClass="FeatureStaplingSample.FeatureCode.TeamSiteInitFeatureReceiver" 
         xmlns="
 /> 
上面的Feature使用了一个事件处理程序来进行实际的工作,事件处理程序的代码就不贴了。 
(需要VS2008+VSeWSS 1.2)。

本文转自 kaneb0y 51CTO博客,原文链接:http://blog.51cto.com/kaneboy/280769,如需转载请自行联系原作者
你可能感兴趣的文章
jquery.post请求并处理返回xml数据
查看>>
gcc 的 loop unrolling
查看>>
Grails中的UrlMapping
查看>>
上博客园,用工作台
查看>>
插入排序
查看>>
ArcGIS Engine+拓扑操作
查看>>
符号表
查看>>
android gravity属性和weight属性
查看>>
Oracle中TO_CHAR格式
查看>>
xml解析
查看>>
2012下半年-学习目录
查看>>
.NET异步编程总结----四种实现模式
查看>>
百度统计流量研究院——了解互联网行业基本数据分布和趋势
查看>>
光棍节程序员闯关秀过关全攻略(附带小工具)
查看>>
SELinux 入门
查看>>
新版python logging 封装,支持同时向console,file,socket输出
查看>>
django form 定义
查看>>
[转载]ASP.NET Web API author
查看>>
jps命令
查看>>
SupportedPackages – PyInstaller
查看>>