Вам не нужно развертывать пользовательский макет страницы, но вам нужно использовать код.Мы решили это путем создания Приемника событий для события WebProvisioned, которое будет срабатывать после создания нового SPWeb.
Что вы можете сделать, это обновить PublishingPage в новой сети с помощью макета страницычто ты хочешь.Это позволяет пользователям создавать новые сети, но вы можете установить макет страницы по умолчанию для каждого нового веб-сайта.
Это код получателя события:
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 */
}
}
И это код для регистрацииприемник событий (его можно запустить, когда ваша функция активирована или можно запустить один раз из сценария PowerShell или консольного приложения):
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();
}