惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 赏梅斋

直接访问K2数据库找未归档正在进行中的流程的SQL语句 SharePoint学习笔记1--Asp.net与SharePoint的Session机制 安装Lync Server前端必备组件Wmf2008R2时失败的问题 域环境安装SQLServer时出现“帐户名与安全标识之间无任何映射”的问题 网络发现不能启用的问题 sharepoint 2010 与sqlserver denali的支持性安装测试 SPES2011开始注册了! K2 Blackpearl 4.5 怎样配置SQLUM SharePoint2010企业开发最佳实践(九)---- 事件接收器的最佳做法 SharePoint2010企业开发最佳实践(八)---- SPWeb 对象 SharePoint2010企业开发最佳实践(七)---- SPSite 对象 SharePoint2010企业开发最佳实践(六)---- 用于确保释放对象的编码技术 SharePoint2010企业开发最佳实践(五)---- 查找错误释放的对象 SharePoint2010企业开发最佳实践(四)---- 关于使用可释放的 SharePoint 对象的介绍 SharePoint2010企业开发最佳实践(三)---- 对象缓存技术 SharePoint2010企业开发最佳实践(二)---- 处理大型文件夹和列表 SharePoint2010企业开发最佳实践(一)----在 SharePoint Server 中编写有效代码 修改MOSS服务器名称 赏梅斋最新推出论坛Microsoft Information Worker
2008年3月19日主题讨论日
赏梅斋 · 2008-03-19 · via 博客园 - 赏梅斋

鼻涕@北京 說:

今天的议题是关于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 補一下