Domanda

Sto creando una funzione di ricevitore sito che definisce una pagina master personalizzata sul Web principale. Vorrei anche come la pagina master impostato sulla radice di essere ereditare a tutti i siti secondari. Qual è il modo più elegante per assicurare che questo (usando NET)?

(Ovviamente ho potuto scorrere tutti i siti secondari e impostare manualmente ..)

È stato utile?

Soluzione

C'è un modo più semplice per farlo utilizzando l'API di SharePoint:

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

Altri suggerimenti

Credo che la cosa migliore che possiamo fare è qualcosa di simile a quanto segue nel metodo FeatureActivated.

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

Chiamare questo passando lo SPSite.RootWeb, e specificando il percorso dei pagine master. Sarà recurse su tutti i siti di sotto di tale rootweb nella raccolta siti (vale a dire tutti loro!)

Si noti che potrebbe essere necessario prendere in considerazione se i siti di sotto utilizzo diverse pagine master come questo può causare problemi , in particolare con le aree di lavoro riunioni, ma forse altri.

Si può anche prendere in considerazione salvare il valore originario pagine mastro dettagli nel elenco di proprietà per il web in modo da poterli ripristinare in seguito (ad esempio funzione di disattivazione)

E si potrebbe desiderare di fare in modo che i temi siano spenti e non interferiscono con il look and feel.

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

Questa disposizione i childsites di ricevitore di eventi prendendo sito toplevel masterpage ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top