Sharepoint: How do I change the default page layout for newly created subsites? -


i'm working on sharepoint 2010 publishing site has many subsites. i've set custom master page, , several custom page layouts.

i've discovered how set default page layout used newly created pages in subsite (found @ /_layouts/areatemplatesettings.aspx), can't seem figure out how specify default page layout used create ~/pages/default.aspx when create new subsite.

right selects welcomelinks.aspx, , that's not want.

is available if deploy custom master pages / layouts via code, , if so, have examples?

thanks.

you don't need deploy custom page layout need use code. way have solved create event receiver webprovisioned event fire after new spweb has been created.

what can update publishingpage in new web page layout want. allows users create new webs set default page layout of each new web.

this event receiver code:

public override void webprovisioned(spwebeventproperties properties) {     try     {         if (publishingweb.ispublishingweb(properties.web))         {             publishingweb curpubweb = publishingweb.getpublishingweb(properties.web);              foreach (pagelayout curlayout in curpubweb.getavailablepagelayouts())             {                 if (curlayout.name == "defaultpagelayout.aspx")                 {                     foreach (publishingpage curpage in curpubweb.getpublishingpages())                     {                         curpage.checkout();                         curpage.layout = curlayout;                         curpage.update();                         curpage.checkin("");                     }                     break;                 }             }         }     }     catch (exception ex)     {         /* handle exception here */     } } 

and code register event receiver (this can run when feature activated or can run once powershell script or console application):

using (spsite topsite = new spsite("[site collection url]")) {     speventreceiverdefinition webeventdef = topsite.eventreceivers.add();     webeventdef.name = "web adding receiver";     webeventdef.synchronization = speventreceiversynchronization.synchronous;     webeventdef.type = speventreceivertype.webprovisioned;     webeventdef.sequencenumber = 4001;     webeventdef.assembly = "mycustomassembly, version=1.0.0.0, culture=neutral, publickeytoken=123456789";     webeventdef.class = "mycustomassembly.customevents";     webeventdef.data = "adding publishingwebfeatures";     webeventdef.update(); } 

Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

aspxgridview - Devexpress grid - header filter does not work if column is initially hidden -

c# - How to execute a particular part of code asynchronously in a class -