Я пытаюсь подготовить сайт связи с помощью SharePoint CSOM / REST, а затем добавляю веб-часть на домашнюю страницу. Первая часть (обеспечение) работает хорошо. Однако, когда я добавляю веб-часть с помощью пакета SharePointPnPCoreOnline
NuGet, все существующие веб-части на домашней странице удаляются.
Вот мой код обеспечения (упрощенный для краткости):
var homePage = clientContext.Web.LoadClientSidePage("Home.aspx");
var clientSideComponent = homePage.AvailableClientSideComponents()
.SingleOrDefault(csc => csc.Id.Equals("{<web part ID here>}", StringComparison.OrdinalIgnoreCase));
ClientSideWebPart webPart = new ClientSideWebPart(clientSideComponent);
CanvasSection section = new CanvasSection(homePage, CanvasSectionTemplate.OneColumn, 0);
homePage.Sections.Add(section);
homePage.Save();
homePage.AddControl(webPart, section.Columns[0]);
homePage.Save();
homePage.Publish();
Когда сайт только что подготовлен, а домашняя страница еще не изменена:
- На странице отображается набор веб-частей по умолчанию. Например, если я выбрал дизайн «Тема», я смогу увидеть
- раздел полной ширины, содержащий веб-часть «Герой», с пятью плитками и некоторыми приветственными сообщениями и ссылками
- Раздел «один столбец», содержащий несколько веб-частей: новости, события, документы, быстрые ссылки и профили пользователей.
- Содержимое страницы, загруженное с сайта «SitePages»библиотека, не содержит элемент
<mso:CanvasContent1 />
, поэтому она не имеет явно определенной веб-части. - Содержимое этих веб-частей взято из
https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-09-20.008/sp-pages-assembly_en-us_36e69c06b20e347fb4426bfdff916a8e.js
файла - Содержимое веб-частипереведен на язык текущего пользователя.
После того, как я снабдил свою веб-часть предыдущим кодом, веб-часть присутствует на странице, но все исходные веб-части были удалены.
Если вместо автоматической подготовки веб-части я выполняю ее вручную:
- Сохраняются веб-части по умолчанию.
- На странице, хранящейся в "SitePages", яможно увидеть оригинальные веб-частии моя веб-часть в элементе
<mso:CanvasContent1 />
. - Исходный контент больше не переводится, а доступен только на языке пользователя, который первым отредактировал страницу.
Итак, мой вопрос: есть ли способ программным образом добавить веб-часть на домашнюю страницу недавно подготовленного современного сайта (группы или коммуникации), не удаляя веб-части по умолчанию?