Adicionar a Publicação de Páginas specfic subsites programaticamente no FeatureReceiver
-
10-12-2019 - |
Pergunta
Atualmente, eu tenho subsites criados programaticamente no FeatureReceiver método e ter uma forma de criar páginas de publicação, mas estão sendo criada na raiz do site.Existe uma maneira de segmentar um subsite específico para adicionar páginas de publicação para ele??
Uma vez que este é o receptor de recurso eu estou acessando a web atual como este a partir de outro método utilizando a SPFeatureReceiver properties
SPWeb spWeb = properties.GetWeb();
Eu tentei algo assim, mas não foi bem-sucedida:
SPSite site = properties.Feature.Parent as SPSite;
{
using (SPWeb oSPWeb = site.OpenWeb("http://www.mysite.com/newsite"))
{
// page creation code
}
}
Qualquer ajuda seria bom
Solução
Todos
Acabou por conseguir que as coisas funcionem
Depois de obter SPSite site = properties.Feature.Parent as SPSite;
Eu descobri que tudo o que eu precisava fazer era adicionar o restante da url que poderia ser algo como "/NewPage" para o resto da url, como eu já tinha o completo site de url a partir das propriedades.
Criou um método que passaram no site e o weburl para obter o meu resultado desejado para desde as páginas da web
ATUALIZAÇÃO:
Aqui está o código de passar estes parâmetros:
Este método é usado para criar a Página
private void CreatePage(SPSite site1, string cWebUrl, string cPageLayout, string cPageName, string cPageTitle)
{
try
{
using (SPWeb spoWeb = site1.OpenWeb(cWebUrl))
{
PublishingWeb pWebRoot = PublishingWeb.GetPublishingWeb(site1.RootWeb);
PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(spoWeb);
PageLayout[] layouts = pWebRoot.GetAvailablePageLayouts();
PageLayout pl = GetPageLayout(layouts, cPageLayout);
if (pl != null)
{
//Create My Pages
PublishingPage newPage = pWeb.GetPublishingPages().Add(cPageName, pl);
newPage.Layout = pl;
newPage.Title = cPageTitle;
newPage.Update();
newPage.CheckIn("");
pWeb.Update();
}
}
}
catch (Exception ex)
{
//Error Handling code
}
}
Em seguida, criei outro método onde passei os valores para todas as páginas eu queria criar:
private void CreatePages(SPSite site)
{
CreatePage(site, "/", "MyPage1.Minimal..aspx", "Page1.aspx", "Page1");
CreatePage(site, "/", "MyPage2.Minimal.aspx", "Page2.aspx", "Page2");
CreatePage(site, "/", "MyPage3.Minimal.aspx", "Sitemap.aspx", "Sitemap");
}