1

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

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

ответ

0

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

1

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

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

У меня есть подобное решение, как 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"); 
} 
Смежные вопросы