SP2010 Ripristina tutti i siti secondari a masterpage ereditare utilizzando c #
-
16-10-2019 - |
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 ..)
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 ...