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

Foi útil?

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");
        }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top