Pregunta

Estoy creando un receptor de funciones de sitio que establece una página maestra personalizada en la web raíz. También me gustaría que la página maestra se estableciera en la raíz para que se herede a todos los subsitios. ¿Cuál es la forma más elegante de garantizar esto (usando .NET)?

(Obviamente podría iterar a través de todos los subsitios y establecerlo manualmente ...)

¿Fue útil?

Solución

Hay una forma más fácil de hacer esto usando la API de SharePoint:

SPWeb web = SPContext.Current.Web;
PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
publishingWeb.CustomMasterUrl = "/_catalogs/masterpage/mycustom.master";
publishingWeb.CustomMasterUrl.SetInherit(true, true);
publishingWeb.Update();

Otros consejos

Creo que lo mejor que podemos hacer es algo como lo siguiente en el método característico.

foreach (SPWeb site in siteCollection.AllWebs) 
{
  site.MasterUrl = "/_catalogs/masterpage/mycustom.master";
  site.CustomMasterUrl ="/_catalogs/masterpage/mycustom.master";
  site.Update();
  site.Dispose();
}
private void SetMaster(SPWeb web, string masterpagePath, string custommasterpagePath) 
{
    web.CustomMasterUrl = masterpagePath;
    web.MasterUrl = custommasterpagePath;
    web.Update();

    foreach(SPWeb child in web.Webs) 
    {
        try {
            SetMaster(child, masterpage, custommasterpage);
        } 
        finally
        {
            if(child != null) child.Dispose();
        }
    }
}

Llame a esto pasando el spsite.rootweb, y especificando el camino a sus páginas maestras. Recurrirá sobre todos los sitios debajo de esa telaraña en la colección del sitio (¡es decir, todos ellos!)

Tenga en cuenta que es posible que deba considerar si los sitios a continuación usan diferentes páginas maestras como Esto puede causar problemas, particularmente con los espacios de trabajo de la reunión, pero posiblemente otros.

Es posible que también deba considerar almacenar los detalles de las páginas maestras originales en la bolsa de la propiedad para la web para que pueda restaurarlos más tarde (por ejemplo, la desactivación de funciones)

Y es posible que desee Asegúrese de que los temas estén apagados Y no interfieras con tu aspecto.

http://msdn.microsoft.com/en-us/library/gg447066(v=office.14).aspx

Esto provocará los sitios infantiles por receptor de eventos tomando Toplevel Site MasterPage ...

Licenciado bajo: CC-BY-SA con atribución
scroll top