Как загрузить страницу публикации, используя функции? - PullRequest
1 голос
/ 06 февраля 2009

Я пытаюсь создать функцию для загрузки новой страницы публикации в библиотеку «Страницы», но она работает не так, как я хочу. Если я вижу библиотеку с помощью SharePoint Designer, появляется моя страница публикации, но не отображается, если я использую Internet Explorer.

В этой функции я настраиваю свойства: ContentTypeId, ContentTye, Author, Title, FileRef, FileDirRef, FileLeafRef, FileType, LinkFilenameNoMenu, LinkFilename и DocIcon. В предыдущих функциях я столкнулся с той же проблемой, и она была решена с помощью свойства ContentTypeId. В этом случае я точно не знаю, где находится ошибка.

Ответы [ 4 ]

1 голос
/ 11 июня 2009
1 голос
/ 04 мая 2009

Я использую следующий код для создания страницы публикации на основе макета страницы, который считается уже подготовленным и основанного на типе контента. Код выполняется в обработчике событий FeatureActivation для вашей функции:

    using (SPWeb ParentWeb = properties.Feature.Parent as SPWeb)
    {
            PublishingWeb webpublish = PublishingWeb.GetPublishingWeb(ParentWeb);

            //retrieve the layout associated with our custom content type
            PageLayout[] layouts = webpublish.GetAvailablePageLayouts(new SPContentTypeId(MyContentTypeID));

            //first layout considered, as this is the one created by this feature
            PageLayout MyPageLayout = layouts[0];

            PublishingPageCollection PublishingPages = webpublish.GetPublishingPages();

            PublishingPage newPage = PublishingPages.Add("NewPublishingPageName.aspx", MyPageLayout);
            newPage.Title = "My first publishing page";

            newPage.ListItem.Update();

            //check-in and republish the page
            SPFile listItemFile = newPage.ListItem.File;

            //check that the file is not checked out - if it is,  check it in.
            if (listItemFile.CheckOutStatus != SPFile.SPCheckOutStatus.None)
            {
                listItemFile.CheckIn("Initial default content added.");
            }

            listItemFile.Publish("");
            listItemFile.Approve("");                
    }
0 голосов
/ 04 июня 2009

У меня есть решение, подобное Tudor, я опубликую этот код на всякий случай:

... получить SiteCollection (SPSite) ...

PublishingSite pSite = new PublishingSite(site);
PageLayout layout = pSite.PageLayouts["MyLayout"];

PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(site);

if(pWeb.GetPublishingPages()[pWeb.PagesList.Title + "/" + "MyPage.aspx"] == null)
{
  PublishingPage page = pWeb.GetPublishingPages().Add("MyPage.aspx", layout);
  page.Title = "MyTitle";
  page.Update();
  page.CheckIn("Added MyPage.aspx");
}
0 голосов
/ 03 мая 2009

У меня была похожая проблема. Оказалось, я должен был опубликовать загруженный файл, чтобы сделать его видимым.

...