设为首页 收藏本站
查看: 1055|回复: 0

[经验分享] Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master

[复制链接]

尚未签到

发表于 2015-9-28 11:56:25 | 显示全部楼层 |阅读模式
        最近做了一个项目管理系统,要求用Sharepoint,有个特别的功能就是通过创建出来的子站点要求应用同一个Master页面,并且每次修改Master页面都要同时修改所有的子站点,有这个需求就限制了Master页面只能有一个,通过查找资料,最终找到了相应的解决方案,用VS定制Master页面,通过Feature EventReceive 和 EventReceive两个事件处理程序来完成操作,下面一步一步来介绍开发过程。


项目整体结构如下图所示。

DSC0000.jpg



一、创建两个Module,ModuleMasterpage和ModuleStyle

修改ModuleMasterPage的Xml,修改格式如下




<Module Name="ModuleMasterPage" Path="ModuleMasterPage" Url="_catalogs/masterpage">
<File Url="CustomMasterPage.master" Type="GhostableInLibrary">
<Property Name="UIVersion" Value="4"/>
<Property Name="ContentTypeId" Value="0x010105"/>
</File>
</Module>

上面的Url 通过SharePoint Designer可以找到MasterPage所在的位置,之后把对应的路径写上就OK了,部署解决方案后可以到Designer里查看。

修改ModuleStyle




<Module Name="ModuleStyle" Url="Style Library">
<File Path="ModuleStyle\CustomCss.css" Url="ModuleStyle/CustomCss.css" />
</Module>

上面的Url对应 样式库 通过Designer查看,原理同上

二、创建Master

把Sample.txt 修改成 CustomMasterPage.master,通过Designer打开V4.master,之后复制所有内容到 CustomMasterPage.master上面,根据不同的需求进行定制就OK了,定制完成后Deploy。

三、创建 Feature EventReceive ,启用 FeatureActivated(激活某个功能后引发的事件) 和 FeatureDeactivating(停用某个功能前引发的事件),这两个事件对应的方法为



DSC0001.gif DSC0002.gif View Code


public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
if (site != null)
{
string url = site.ServerRelativeUrl;
foreach (SPWeb web in site.AllWebs)
{
web.MasterUrl = url + "_catalogs/masterpage/CustomMasterPage.master";
web.CustomMasterUrl = url + "_catalogs/masterpage/CustomMasterPage.master";
web.AlternateCssUrl = url + "Style Library/ModuleStyle/CustomCss.css";
web.UIVersion = 4;
web.Update();
}
}
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPSite site = properties.Feature.Parent as SPSite;
if (site != null)
{
string url = site.ServerRelativeUrl;
foreach (SPWeb web in site.AllWebs)
{
web.MasterUrl = url + "_catalogs/masterpage/V4.master";
web.CustomMasterUrl = url + "_catalogs/masterpage/V4.master";
web.AlternateCssUrl = "";
web.SiteLogoUrl = "";
web.UIVersion = 4;
web.Update();
}
}
}

这两个方法比较简单,就不做详细介绍了

四、创建 EventReceive EventReceiverChildSiteCreated,子站点创建后应用Master

DSC0003.jpg




         /// <summary>
/// 已配置网站.
/// </summary>
public override void WebProvisioned(SPWebEventProperties properties)
{
base.WebProvisioned(properties);
SPWeb web = properties.Web;
SPWeb rootWeb = properties.Web.Site.RootWeb;
web.MasterUrl = rootWeb.MasterUrl;
web.CustomMasterUrl = rootWeb.CustomMasterUrl;
web.AlternateCssUrl = rootWeb.AlternateCssUrl;
web.Update();
}
  最后就是部署并激活Feature了,就这样解决了用户的要求,同时分享给大家了......
  参考资料:Sharepoint 2010 开发最佳实践   这本书

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119957-1-1.html 上篇帖子: Sharepoint学习笔记--存取Sharepoin配置信息的10条途径 下篇帖子: 推荐一个学习 SharePoint 2010 的站点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表