Massimo Prota's BLog

Nothin' but .NET
posts - 46, comments - 37, trackbacks - 5

My Links

News

View Massimo Prota's profile on LinkedIn Rapid Circle

Archives

Post Categories

Blogs

Links

[MOSS] Cambiare la master page utilizzata da un page layout

Lavorando con la feature di publishing in MOSS si può incorrere in una limitazione: un page layout utilizza sempre la master page definita a livello di root site e non è possibile modificare questo comportamento specificando l'attributo MasterPageFile nella direttiva di pagina perché questo viene semplicemente ignorato. Questa può essere una grossa limitazione in caso di numerosi siti figli che condividono lo stesso root site come ad esempio siti multilingua su cui agisce variation.

Per aggirare questo menefreghismo della piattaforma è necessario ridefinire la pagina padre del nostro page layout, da PublishingLayoutPage a una pagina custom che eredita da questa, contenente il seguente codice nel metodo OnPreInit

    public class CustomMasterLayoutPage : PublishingLayoutPage
    {
        protected override void OnPreInit(EventArgs e)
        {
            string userDefinedMasterPage = this.MasterPageFile;
 
            base.OnPreInit(e);
 
            if (!string.IsNullOrEmpty(userDefinedMasterPage))
                this.MasterPageFile = userDefinedMasterPage;
        }
    }


A questo punto bisogna dopo le solite operazioni da MOSS (compilare in una DLL, inserirla in GAC, autorizzarla come SafeControl nel web.config) possiamo sostituire all'interno del nostro page layout la classe base da Microsoft.SharePoint.Publishing.PublishingLayoutPage con la full identity della custom page creata e la valorizzazione di MasterPageFile da direttiva di pagina finalmente funzionerà correttamente.

Una soluzione semplice tanto da far perdere una mezz'ora e un paio di capelli.

Print | posted on lunedì 26 novembre 2007 21:45 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET