赏梅斋

关注微软技术

博客园 首页 新随笔 联系 订阅 管理

鼻涕@北京 說:

今天的议题是关于MOSS2007站点定制。

鼻涕@北京 說:

但其实我不想把这个作为一个课程来讲。

鼻涕@北京 說:

毕竟我现在并不实际做项目。所以其实没有什么发言权。

梁风飚 - 說:

哪里做的从哪里搞呗

鼻涕@北京 說:

群里面的很多朋友的经验要比我丰富的多。

鼻涕@北京 說:

我希望能够提出一些讨论的话题,以及我个人的想法

绝对领域(Super Zero) 說:

应该是我问问题的经验比你们多,我问得问题90%都解决不了

鼻涕@北京 說:

供大家讨论。

鼻涕@北京 說:

言归正传。

鼻涕@北京 說:

要说这个站点定制

鼻涕@北京 說:

站点定制大概可以分成3个层级:

鼻涕@北京 說:

1。用WebPart定制

鼻涕@北京 說:

2。用SPD定制

鼻涕@北京 說:

3。利用Feature/CSS/solution等开发的角度来定制

鼻涕@北京 說:

先说第一种。这个比较简单,几乎所有人都在经常做,就是把WebPart放到页面上,改改设置。

鼻涕@北京 說:

当然,还需要针对不同的情况,用不同的模板创建不同的网站。

十一™-VAIO可以上4G了...好心動... 說:

=====有問題的同學 , 等講完課再發言=====錄影中 , 請微笑=====

鼻涕@北京 說:

这种定制方法非常简便,容易上手,但问题是局限性非常大

鼻涕@北京 說:

被限制在固定的网站模板和WebPart上

鼻涕@北京 說:

所以我也不做过多介绍了。

鼻涕@北京 說:

2种方法,相信是很多朋友都在使用的方法,也是我在那本书里介绍的方法。

鼻涕@北京 說:

SharePoint Designer 2007打开需要定制的SharePoint网站,然后进行修改,再然后进行保存。

鼻涕@北京 說:

这样就可以非常方便的借助可视化工具(SPD),来对我们的页面进行样式上的改动。

鼻涕@北京 說:

而且,通过SPD,可以非常容易的添加及定制母板页和页面布局页。

鼻涕@北京 說:

这种方法的优点是,有可视化的编辑工具支持。

鼻涕@北京 說:

缺点是,所有在SPD里修改过的页面,都会从"Uncustomized Page" 变为"Customized page"

鼻涕@北京 說:

这个(un)customized就是对应我们在2003时常说的" (un)ghosted page"

鼻涕@北京 說:

那么什么又是 Uncustomized和cusomized pages呢?

鼻涕@北京 說:

当浏览器访问一个SharePoint URL时,SharePoint会判断这个地址对应的页面是否是 Cusomized

鼻涕@北京 說:

如果是Customized了,那么这个页面就是被整个存在数据库里

鼻涕@北京 說:

SharePoint就会从数据库里把这个页面取出来给浏览器

鼻涕@北京 說:

如果是Uncustomized,那么这个页面的框架信息就是放在Web前端服务器的硬盘里,SharePoint就会从硬盘里找到这个文件,加上这个页面里的Web

鼻涕@北京 說:

部件信息一同渲染成最终页面给浏览器。

鼻涕@北京 說:

注:前面所说的SharePoint去找这个页面等等,这个"SharePoint"实际上指的是SharePointIIS里面附加的自定义http handler

鼻涕@北京 說:

显然,从performance上,Uncustomized page是优于 Customized

十一™-VAIO可以上4G了...好心動... 說:

=====有問題的同學 , 等講完課再發言=====錄影中 , 請肅靜=====

鼻涕@北京 說:

举例来说,你用工作组网站模板创建了1000个子网站

鼻涕@北京 說:

其中有500个首页用SPD编辑过,变成了Customized Pages

鼻涕@北京 說:

另外500个没用过SPD

鼻涕@北京 說:

一个用户依次访问了这1000个网站的首页。

鼻涕@北京 說:

其中那500个被SPD编辑过的页面统统都要被加载到内存里。

鼻涕@北京 說:

而另外500个没被编辑过的,就只被加载一次了。

鼻涕@北京 說:

所以大家可以大概明白了,如果你的网站数量很多,而且有大量的创建新网站的场景,那么建议你对重复出现的网站慎用SPD,如果网站数目不多,而且相对固定,那么SPD则是你非常得力的工具。

鼻涕@北京 說:

3种方法是基于Feature/Solution等等侧重开发视角的定制方式。

鼻涕@北京 說:

利用这种方法,是不会动用SPD的,也就不会使页面发生Customize

鼻涕@北京 說:

另外,这种方式借助Featureframework,使得定制过程可以非常容易被分发。

鼻涕@北京 說:

我再举个例子来表示第2种和第3种的区别。

鼻涕@北京 說:

比如我们要给MOSS门户网站加一个自订制的母板页。

鼻涕@北京 說:

如果用第2SPD的方法,那么就是用SPD打开网站,找到母板页库的文件夹,在里面创建一个新的文件,然后进行修改,然后保存,然后签入,再然后审批通过。

鼻涕@北京 說:

这样这个母板页就生效了。

鼻涕@北京 說:

如果我们是在开发环境做这件事,做好之后要部署到生产环境去了,那么你需要用SPD打开生产环境的网站,找到母板页库的文件夹,然后把这个文件上载上去,然后签入,然后审批通过。

鼻涕@北京 說:

这只是更新一个母板页,如果你有大量的内容需要更新到生产环境,那么用这种SPD手动的方式就有很大问题了。

北京㊣Tim 說:

Uncustomized page不会影响太大,每个用户只是一次访问一个页面就算你有500,影响也不会很大,影响大的应该是并发用户数量太大。

鼻涕@北京 說:

//hand Tim

鼻涕@北京 說:

@Tim 如果500个用户分别访问了500个网站,内存还是会加载这500个的

北京㊣Tim 說:

普通的web应用程序不也是这样?

鼻涕@北京 說:

另外一个影响就是,因为CustomizedPages都是放在数据库里的

鼻涕@北京 說:

所以你添加Web前端服务器作负载均衡是对这些页面无效的,因为可能瓶颈会在与SQL的通信上。

鼻涕@北京 說:

@Tim如果是Uncustomzied500个同样模板的网站,内存就只加载一份模板文件。

鼻涕@北京 說:

刚刚是说第2种方法,如果使用第3种方法,加一个母板页应该怎么做呢?

鼻涕@北京 說:

首先,做出一个母板页文件。

鼻涕@北京 說:

然后写一个Feature,通过"Module"这个element来声明这个母板页文件将被provision到母板页库里。

鼻涕@北京 說:

然后在需要的环境里的所有Web前端部署这个Feature

鼻涕@北京 說:

如果在某个网站上,你激活了这个Feature,那么这个母板页就在这个网站里生效了。

鼻涕@北京 說:

部署到生产环境的时候,你只要部署这个Feature,或者把这个Feature连同你做的其他工作打包成一个WSS Solution Pack进行部署,可以直接用脚本完成。

鼻涕@北京 說:

而且,你通过这种方法部署的母板页是Uncustomized的。

鼻涕@北京 說:

上面说的大家有什么疑问么?

鼻涕@北京 說:

都被我讲跑了么。。。

十一™-VAIO可以上4G了...好心動... 說:

=====有問題的同學 , 等講完課再發言=====

鼻涕@北京 說:

哈哈

鼻涕@北京 說:

好,那我继续。

鼻涕@北京 說:

@bower,这个生成master pageFeatureSDK里有个完整例子。。。

鼻涕@北京 說:

时间有限我不想cover太多细节。。

十一™-VAIO可以上4G了...好心動... 說:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<Module Name="MPages" List="116" Url="_catalogs/masterpage">

<File Url="Minimal.master" Type="GhostableInLibrary" />

<File Url="ContosoRed.master" Type="GhostableInLibrary" />

</Module>

</Elements>

 

鼻涕@北京 說:

好。我们来假象一个网站定制的场景

鼻涕@北京 說:

比如我要做一个internet face 的网站

鼻涕@北京 說:

确定基于MOSS2007来制作

鼻涕@北京 說:

于是请美工进行了一些样式设计。

鼻涕@北京 說:

作为Customization Group的开发人员,

鼻涕@北京 說:

你的工作是要把美工的设计加入到SharePoint站点中去。

鼻涕@北京 說:

这个问题相信很多朋友都遇到过,而且都有自己的解决办法。

鼻涕@北京 說:

我之前也说了,我在这个方面的经验其实并不丰富。所以在这里就是抛砖引玉了。大家可以讨论哦。

鼻涕@北京 說:

继续。

鼻涕@北京 說:

首先要创建出母板页(我们假设美工的SharePoint sense不错,在每个页面的右上角落里都留出了个人信息的位置和搜索框)

鼻涕@北京 說:

这个过程就不多说了,参考刚刚的所谓第3种方式。

鼻涕@北京 說:

但做母板页本身有一些窍门。

鼻涕@北京 說:

因为这个母板页是要加载到网站里几乎所有的SharePoint页面上的

鼻涕@北京 說:

大家知道SharePoint的用户体验很不错,页面上会有各种各样的控件。

鼻涕@北京 說:

这些控件很多都会放在一些特定的placeholder里面。

鼻涕@北京 說:

所以,我们制作母板页的时候,要保证有一个最低限度,就是说,所有SharePoint控件需要的placeholder,我们都要事先放到我们的母板页里。

鼻涕@北京 說:

为什么要提这个问题出来呢?

鼻涕@北京 說:

因为如果你用SPD做母板页的话,推荐的做法是你把现成的一个母板页复制一个,然后在这个基础上改。那当然不会缺失必要的内容。

鼻涕@北京 說:

但如果是用Feature的方式来做这个母板页的话,推荐的做法是直接用VS或者随便什么文本编辑器来制作这个母板页文件。

鼻涕@北京 說:

好。那有人问了,我怎么知道哪些placeholder是必须的?

鼻涕@北京 說:

参考MSDN上的一篇文章。

鼻涕@北京 說:

我等下贴给大家。

鼻涕@北京 說:

好。母板页做好了。

鼻涕@北京 說:

如果是要发布不同的Web内容页面,那么还需要PageLayout页面。

鼻涕@北京 說:

而PageLayouts页面很可能是需要自定义内容页面内容类型或网站栏的。

鼻涕@北京 說:

http://msdn2.microsoft.com/en-us/library/bb727372.aspx

鼻涕@北京 說:

这个就是那个链接。

鼻涕@北京 說:

继续

鼻涕@北京 說:

同样,出于微软的推荐做法以及最终部署和重用的便捷性,建议自定义内容和网站栏也通过Feature的方式来开发。而不是直接在UI里做。

鼻涕@北京 說:

当然,这种方法的选择不是普适的,否则微软也不必提供这么多可能性了。如果你是一个软件商,

鼻涕@北京 說:

如果你是一个软件商,需要面对大量的不同的客户

鼻涕@北京 說:

建议你用Feature的方法,因为有重用的考虑。

鼻涕@北京 說:

如果你是一个企业的IT工作人员,只要管好自己的网站就可以

鼻涕@北京 說:

那你可以考虑使用SharePoint提供的UI,或者用SPD,因为你并不需要考虑重用,最快的达到效果才是你的Goal

鼻涕@北京 說:

具体layouts的做法上面那个链接里也有提到。

鼻涕@北京 說:

好,框架做好之后,我们还要跟各种各样的WebPart做斗争。

鼻涕@北京 說:

SharePoint提供了大量非常好用的WebPart(以及那些默认的内置页面)

鼻涕@北京 說:

而这些内容显示的样式就不是那么容易改掉的了。

鼻涕@北京 說:

微软推荐的方法是用自定义的CSS,

鼻涕@北京 說:

你可以从文档中得知SharePoint页面上各个部分的CSS 类

鼻涕@北京 說:

然后自己写一个CSS文件,声明你要做的修改,然后加载上来。

鼻涕@北京 說:

再有需要,就是对SharePoint内置WebPart的一些深入定制,比如通过自定义的XSLT来定制"内容查询Web部件"等等。

鼻涕@北京 說:

或者大家自己开发自己的Web部件来进行自定义的内容显示。

鼻涕@北京 說:

这个就是一个定制过程的概述。请问大家有什么问题么?

十一™-VAIO可以上4G了...好心動... 說:

http://msdn2.microsoft.com/en-us/library/ms467402.aspx 是Content Placeholders Defined in default.master 補一下

posted on 2008-03-19 18:30  赏梅斋  阅读(565)  评论(0编辑  收藏  举报