Agregue páginas de publicación a subsitos específicos programáticamente en el receptor de características
-
10-12-2019 - |
Pregunta
Actualmente, he creado subsitales programáticamente en el método de Feururectoryiver y tiene una forma de crear páginas de publicación, pero se están creando en el sitio de la raíz.¿Hay alguna manera de apuntar a un subsito específico para agregar páginas de publicación a ella?
Dado que esto está en el receptor de características, estoy accediendo a la web actual como esta desde otro método usando el SPFeatureReceiver properties
SPWeb spWeb = properties.GetWeb();
Intenté algo así, pero no tuvo éxito:
SPSite site = properties.Feature.Parent as SPSite;
{
using (SPWeb oSPWeb = site.OpenWeb("http://www.mysite.com/newsite"))
{
// page creation code
}
}
Cualquier ayuda sería buena
Solución
todos
terminó haciendo que las cosas funcionen
Después de obtener SPSite site = properties.Feature.Parent as SPSite;
, descubrí que todo lo que tenía que hacer era agregar el resto de la URL, que podría ser algo así como "/ newpage" al resto de la URL ya que ya tenía la URL del sitio completo de las propiedades.
creó un método que pasó en el sitio y la weburl para obtener mi resultado deseado para provisar las páginas web
Actualización:
Aquí está el código que pasa estos parámetros:
Este método se utiliza para crear la 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
}
}
Luego creé otro método donde pasé por los valores a todas las páginas que quería crear:
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");
}