将新的子网站应用于根网站时,刷新子网站的母版页
本文关键字:网站 刷新 母版页 应用于 | 更新日期: 2023-09-27 17:59:30
让我公开我的问题:我有一个根网站,有一个主页,还有许多子网站。有些使用根网站母版页(通过继承),有些不使用根网站母版页。
当我用这样的功能事件接收器更新根站点MP时:
SPWeb w = ((SPSite)properties.Feature.Parent).OpenWeb();
Uri masterUri = new Uri(w.Url + "/_catalogs/masterpage/AdventureWorks.master");
//MasterPage used by publishing pages
w.CustomMasterUrl = masterUri.AbsolutePath;
w.AllowUnsafeUpdates = true;
w.Update();
更新根网站的母版页,但不更新从根网站母版页继承的子网站!当我转到子网站的网站母版页设置页时,"从此网站的父网站继承网站母版"单选按钮被选中。
当我从"网站母版页设置"页面应用新的母版页时,我没有遇到这个问题。
有关信息:我在发布网站中的根网站以及"SharePoint Server发布基础结构"answers"SharePoint Server Publishing"功能正在运行。
我错过什么了吗?
一个月后仍然没有响应:/所以我想没有机制更新子网站的所有母版页。所以我更新了功能激活的事件接收器,如下所示:
using (SPWeb w = ((SPSite)properties.Feature.Parent).OpenWeb())
{
Uri masterUri = new Uri(w.Url + "/_catalogs/masterpage/AdventureWorks.master");
w.CustomMasterUrl = masterUri.AbsolutePath;
w.AllowUnsafeUpdates = true;
w.Update();
foreach (SPWeb ww in w.Site.AllWebs)
{
if (!ww.IsRootWeb)
{
Hashtable hash = ww.AllProperties;
if (string.Compare(hash["__InheritsCustomMasterUrl"].ToString(), "True", true) == 0)
{
ww.CustomMasterUrl = masterUri.AbsolutePath;
ww.AllowUnsafeUpdates = true;
ww.Update();
}
}
}
}
目标是测试每个子网是否继承了masterPage。如果是,我们必须更新CustomMasterUrl属性。
使用此设置根和所有子网站上的主页面:
var web = site.RootWeb;
web.MasterUrl = web.CustomMasterUrl = SPUtility.ConcatUrls(web.ServerRelativeUrl, "_catalogs/mymaster.master");
web.Update();
foreach (SPWeb subWeb in site.AllWebs)
{
using (subWeb)
{
if (subWeb.IsRootWeb) continue;
var hash = subWeb.AllProperties;
subWeb.MasterUrl = subWeb.CustomMasterUrl = web.MasterUrl;
hash["__InheritsMasterUrl"] = "True";
hash["__InheritsCustomMasterUrl"] = "True";
subWeb.Update();
}
}