自定义SharePoint新网站创建过程 (二)

news/2024/5/9 19:21:00/文章来源:https://blog.csdn.net/weixin_30787531/article/details/97055679

首先澄清一个概念。在一个SharePoint网站的网站设置页面中,使用“将网站另存为模板”链接,管理员可以将整个网站保存为一个扩展名为.stp格式的模板。使用这个stp网站模板,管理员可以重复创建同样结构(和内容)的新网站。那么这种stp格式的网站模板,和我们下文所说的Site Definition有什么区别呢?简单来说,Site Definition是一种通过磁盘上的一系列文件(包括xml、页面模板文件等等)来对一个网站的结构和内容进行描述的一种方式。Site Definition可以对一个网站模板的方方面面进行非常细致的定义,基本上无所不能。而stp网站模板只是一种简单的将一个已存在网站进行转存之后,可以重复使用的网站模板格式。stp网站模板没法直接修改,没太多可控性。下文中说的“网站模板”一次,默认是指Site Definition。

接着来详细说一下Site Definition。在SharePoint服务器的“Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\2052\XML”位置,有一堆以WEBTEMP开头,扩展名是.xml的文件。这些WEBTEMP*.xml文件,就是SharePoint中用来标明Site Definition的文件。

我们在SharePoint中创建一个新网站时,有一个“工作组网站”的网站模板可以让我们选择。打开“WEBTEMP.xml”文件,就能看到这个“工作组网站”的Site Definition。

image

在WEBTEMP*.xml文件中,“<Template>”节点表示一种Site Definition,它的“Name”属性指明了这个Site Definition保存在“Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates”中的哪个子目录中。一个Template可以包含多个子Configration。一个Configuration对应到一个用户所理解的网站模板。如果我们需要多个网站模板,它们大致相同,只有一些微小的地方有区别,那么我们就可以只定义一个Site Definition,然后用这个Site Definition的多个Configuration来体现这多个网站模板的不同之处。

在上图所示中,我们可以看到,其实“工作组网站”、“空白网站”、“文档工作区”这三个网站模板,都是同属于“STS”这个Site Definition的三个Configuration。“STS” Site Definition位于“C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates\sts”目录中。

image

当然,WEBTEMP*.xml只是让SharePoint知道有哪些Site Definition,以及每个Site Definition中有哪些网站模板(也就是Configuration)可用。但是具体每个模板中包含的内容,包括列表、文档库、页面、页面上的web part等等等等,都是定义在Site Definition中的ONET.XML文件中。比如,下图就是“STS” Site Definition的ONET.XML文件。

image

ONET.XML几乎定义了一个网站模板的方方面面。比如,为什么使用“工作组网站”模板创建的新网站的default.aspx页面,在页面右侧会显示一个SharePoint的Logo图片?这是因为在ONET.XML里面有下面的内容。

image

 

 

 

于是我们就看到了

image

现在你应该已经明白了Site Definition是怎么回事,以及它是如何起作用的。了解这些之后,我们就可以根据自己的需求,来创建自己所需要的Site Definitiion了。你一定要记住一点:永远不要修改SharePoint自带的Site Definition。这是因为微软可能在某些后续的Service Pack或Hotfix中,用更新的文件覆盖旧的Site Definition文件。

创建新的Site Definition的基本步骤是:

1、找一个磁盘上已有的,用来起步的Site Definition,将这个Site Definition目录复制一份;
2、创建新的WEBTEMP*.xml文件,比如WEBTEMP.MySiteTemp.xml,在里面写明新的Site Definition的名称(也就是Site Definition所在的目录名),Configuration等等;
3、修改这个新Site Definition的定义文件直到满足你的需求为止;
4、IISRESET

接着介绍Site Provisioning Engine。什么是Site Provisioning?当你在SharePoint里面,使用某个网站模板,创建了一个新SharePoint网站,这个过程就叫做Site Provisioning。(干嘛不直接叫做Site Creating?嗯,有时候用用时髦词挺Cool的,不是吗?)SharePoint内置了一个Site Provisioning Engine,来完成Site Provisioning过程。这个过程包括给站点应用模板、将所需文件“拷贝”到站点中、根据网站模板类型进行一些其他的必需操作等等。但是,这个Site Provisioning过程也是可以自定制的。

一个Site Provisioning过程,需要由一个继承自Microsoft.SharePoint.SPWebProvisioningProvider的类来完成,具体点说就是由这个类的Provision()方法来完成。所以我们如何自定制这个过程呢?写一个新类,继承自Microsoft.SharePoint.SPWebProvisioningProvider,然后重载Provision()。

我们来用一个实际的示范进行讲解。用户的需求是:“工作组网站”这个网站模板的首页的右侧那个SharePoint Logo图片实在碍眼(没错,就是上面那个截图中的图片),能不能创建网站后,不要那个图片了?当然,我们可以创建一个新的Site Definition,然后修改新Site Definition的ONET.XML文件,去掉这个web part,但是,因为演示的缘故,我故意不用这个简单的方法,而用更“高级”的定制Site Provisioning来完成。

由于“工作组网站”这个模板的其他部分并不需要调整,所以我决定新建一个WEBTEMP.CustomTeamSite.xml文件,并在文件中创建一个新的Configuration。

image

上图中的名称为“定制工作组网站”的“Cinfiguration”节点有两个属性,“ProvisionAssembly”和“ProvisionClass”,这两个属性指定了这个Configuration使用了一个定制的Site Provisioning过程,而不再使用SharePoint默认的Site Provisioning模式。

接着是上面指定的那个定制Site Provisioning类。

image

在重载的Provision()中,首先,代码仍然让新网站应用“工作组网站”这个网站模板。“STS#0”的意思是,使用“STS”这个Site Definition的ID为“0”的Configuration,也就是“工作组网站”这个模板。但是,在应用了默认的“工作组网站”模板之后,再调用了InitTeamSite()方法,在这个方法中通过SharePoint API,将网站首页上的那个图片web part去掉了。

将我们的项目部署到服务器上,IISRESET之后,就能在新建网站页面中看到这个新的名为“定制工作组网站”的网站模板。

image

使用这个网站模板创建一个新网站后,就会发现,这个网站和用“工作组网站”模板创建的网站一模一样,除了首页上再没有那个图片web part。

image

通过创建定制Site Definition,以及创建定制的Site Provisioning类来接管Site Provisioning过程,我们就能够完全自定义一个SharePoint新网站的创建过程了。:)

最后一个问题,我们应该选择哪种方式呢?Feature Stapling?还是Site Definition + Site Provisioning Engine?我更推荐Feature Stapling。将各种自定义功能封装成(一个或多个)Feature,让网站管理员可以自己选择启用或停止这些Feature,如果需要,使用Feature Stapling使网站自动应用并激活这些Feature,是一种更好、更优雅、更具封装性、更容易迁移的方式。

上面所示的定制Site Provisioning项目源码下载。

转载于:https://www.cnblogs.com/Jeffer/archive/2009/11/26/1611617.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_748423.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

开篇语&#xff1a;最近在弄ocx控件发布到asp.net网站上使用&#xff0c;就是用户在使用过程中&#xff0c;自动下载安装ocx控件。&#xff08;此文章也是总结了网上好多人写的文章&#xff0c;我只是汇总一下&#xff0c;加上部分自己的东西&#xff0c;在这里感谢所有在网上发…

[方法篇](禁止YisouSpider|EasouSpider|EtaoSpider)搜索引擎蜘蛛给网站带来的危害,有效指引爬虫对应的措施...

搜索引擎蜘蛛给网站带来的危害&#xff0c;有效指引爬虫对应的措施[方法篇](禁止YisouSpider|EasouSpider|EtaoSpider)上一遍文章《搜索引擎蜘蛛给网站带来的危害&#xff0c;有效指引爬虫对应的措施(最准确搜索引擎蜘蛛名称)》下一篇“如何更高效发现&屏蔽搜索引擎蜘蛛”实…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲&#xff1a; 1. 使用电商案例的原因 2. 电商网站需求 3. 网站初级架构 4. 系统容量估算 5. 网站架构分析 6. 网站架构优化 本文主题为电商网站架构案例&#xff0c;将介绍如何从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的、可供参考的分布式架…

table改网站框的大小

table 当网站出现这样上下不一样宽的时候 修改的时候要修改最外部的table 修改完后效果转载于:https://blog.51cto.com/hmlwl/1398906

Windows Azure系列 -《基础篇》- 创建并发布网站

打开Windows Azure管理门户&#xff0c;点击左侧边栏网站标签&#xff0c;然后点击“创建网站”按钮&#xff1a;在接下来的配置页面输入预想的URL&#xff0c;并选择宿主计划和服务所在位置&#xff1a;点击“创建网站”按钮后就会马上进行创建&#xff0c;很快完成创建并运行…

C++使用libCurl访问12306网站实现登录查询车次信息

作为学习libcurl的小作业&#xff0c; 使用libcurl访问12306&#xff0c;成功获取验证码&#xff0c;目前不能自动识别&#xff0c;需要手动输入&#xff1a;

网站分布式架构

原文&#xff1a;http://xubaoguo.iteye.com/blog/1882030 摘要: 互联网的网站和大部分企业管理软件一样都是使用B/S架构模型&#xff0c;但是大型的公共网站B/S架构会更加复杂&#xff0c;对架构人员的要求更高&#xff0c;今天我想在自己博客里聊聊我设计的网站的B/S技术架构…

网站死链接检测查询工具

网站死链接检测查询工具 什么是网站死链接&#xff1a;死链接就是指网站的链接不能正常被访问&#xff0c;如A页面上面有一个B页面的链接&#xff0c;现在通过A页面的链接访问B页面&#xff0c;可是B页面已经删除或者转移&#xff0c;现在通过A页面的链接访问到B页面并没有出现…

推荐一个很好的看技术书籍的网站,也可以自己写书

2019独角兽企业重金招聘Python工程师标准>>> 1. 网站&#xff1a;https://love2.io 2. 各种技术书籍都有&#xff0c;很多都是技术大牛写的、总结的&#xff0c;也能自己把在gitHub上写的markdown整理而成的书籍上传上去共享出来。 转载于:https://my.oschina.net/u…

Java Web开发: 基于HttpServlet的用户登录网站 实例

一个简单的小例子&#xff0c;基于httpservlet的用户登录&#xff08;杂家是菜鸟刚接触javaee&#xff0c;只能从最简单出发了&#xff09;&#xff0c;首先看业务逻辑&#xff1a; 有三个文件组成&#xff0c;分别是登录、验证和欢迎界面。要达到的目标是&#xff1a; 下图是H…

你的网站会投放这样的广告么?

我震惊了&#xff0c;钱要赚&#xff0c;但为了公司名誉以及社会影响&#xff0c;就算是广告&#xff0c;能不能有个底线的啊&#xff1f;

怎么修复网站漏洞 骑士cms的漏洞修复方案

骑士CMS是国内公司开发的一套开源人才网站系统&#xff0c;使用PHP语言开发以及mysql数据库的架构&#xff0c;2019年1月份被某安全组织检测出漏洞&#xff0c;目前最新版本4.2存在高危网站漏洞&#xff0c;通杀SQL注入漏洞&#xff0c;利用该网站漏洞可以获取网站的管理员账号…

.Net网站不能预编译以及不能请求的调试过程

公司内部的一个网站&#xff0c;Aspx的&#xff0c;最近莫名其妙的出现一个问题&#xff1a; file soLog.aspx has not been pre-compiled,and cannot be requested. 这个问题只有在网站发布到服务器之后才会出现&#xff0c;本地一切正常&#xff0c;但不是每一个页面都有这一…

asp.net写的网站从1.1升级到2.0出现的错误,望各位救命!!!

asp.net从1.1升级到2.0出现的错误&#xff0c;望大侠救命&#xff01;&#xff01;我在将asp.net由1.1升级到2.0时网站程序编译通不过,错误提示为:错误 35 无法将类型"string"隐式转换为"System.Web.UI.WebControls.TextBox" D:\WebSite\Oyalife\Forum\blo…

构建高并发网站-网站架构(架构优化)

一、网站架构的角色1、基本架构2、网站架构升级&#xff0c;用户访问速度提高&#xff0c;提高用户体验CDN 解决南电信北联通网站访问慢问题&#xff0c;通过代理CDN缓存功能代理实现负载均衡功能web服务器存放音乐、图片、视频等存储无限扩大缓存解决数据库读写大、IO高&#…

网站性能优化 - 数据库及服务器架构篇

我先前曾写过三篇有关网站系统、ASP.NET 性能优化的文章&#xff0c;分别从 SQL 语句、数据库设计、ASP.NET 功能、IIS 7 的套件&#xff0c;来探讨此一性能议题。本帖算是系列作的第四篇&#xff0c;整理了一些我看过的书籍和文章&#xff0c;改从「负载均衡、服务器架构、数据…

3.2 找好图这些网站就够了

免费图库推荐 1.百度图片&#xff1a;特大尺寸。复制到ppt中&#xff0c;比例裁剪为16:9. 2.必应&#xff1a;有水印的话&#xff0c;直接裁剪掉。 3.全景网&#xff1a;已经无法使用 4.摄图网&#xff1a;http://699pic.com/tupian/chengshi.html 5.pixabay &#xff1a;h…

ppt素材网站

一、 PPTmall http://www.PPTmall.net/ 针对图表型 PPT 首选的素材网站&#xff0c;里面有大量的 PPT 图表模板 我们可以根据图表&#xff0c;逻辑&#xff0c;要素&#xff0c;颜色等分类快速选取素材 二、 演界网 http://www.yanj.cn/ 点击网站的【演示模板】——【免费专区…

色彩搭配 网站推荐

1、直接选择适合的颜色搭配&#xff0c;附有rgb值。 https://www.icoa.cn/a/512.html 2、可选择合适的色彩搭配。 http://www.360doc35.net/wxarticlenew/843127861.html 3、5款实用的配色工具 【最佳配色表(2019设计师最佳配色工具盘点)-哪吒游戏网】http://m.baigeseo.co…

python制作购物网站_python+Django创建购物网站(一)

1.凡事预则立不预则废。。工作七八个月&#xff0c;接触的全是Java&#xff0c;Java博大精深&#xff0c;到现在没学好。自己反而完全和python隔离了&#xff0c;再不练练&#xff0c;估计要废。2.下载安装pycharm社区版&#xff0c;因为免费&#xff0c;安装Django框架&#x…