在向根网站应用新网站时刷新子网站的母版页

时间:2011-06-20 09:52:32

标签: c# sharepoint-2010 master-pages

让我揭露我的问题: 我有一个根网站,有一个母版页,还有很多子网站。有些人正在使用根网站母版页(通过继承),有些人没有使用根网站母版页。

当我使用这样的功能事件接收器更新根站点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();

...主页面已更新为根网站,但不适用于从根网站母版页继承的子网站!当我转到子站点的站点主页面设置页面时,“从该站点的父站点继承站点主页”单选按钮已经过很好的检查。

当我从“网站母版页设置”页面应用新的MasterPage时,我不会遇到此问题。

有关信息:我在publidhing站点中的根站点以及“SharePoint Server发布基础结构”和“SharePoint Server发布”功能正在运行。

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

一个月后仍然没有回复:/所以我猜没有机制来更新子网站的所有主页。 所以我更新了功能激活事件接收器,如下所示:

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();
                    }
                }
            }
        }

目标是测试foreach子网是否继承masterPage(或不继承)。如果是,我们必须更新CustomMasterUrl属性。

答案 1 :(得分:0)

使用此选项在root和所有子网站上设置母版页:

"analyzer": "autocomplete"