Sharepoint SPFx-通过主页上的代码设置web部件会删除其他内容
我正在尝试使用SharePoint CSOM/REST提供一个通信站点,然后向主页添加一个web部件。第一部分(资源调配)运行良好。但是,当我使用Sharepoint SPFx-通过主页上的代码设置web部件会删除其他内容,sharepoint,sharepoint-online,csom,spfx,sharepointframework,Sharepoint,Sharepoint Online,Csom,Spfx,Sharepointframework,我正在尝试使用SharePoint CSOM/REST提供一个通信站点,然后向主页添加一个web部件。第一部分(资源调配)运行良好。但是,当我使用SharePointPnPCoreOnlineNuGet包添加web部件时,主页上的所有现有web部件都将被删除 以下是我的配置代码(为简洁起见简化): var homePage=clientContext.Web.LoadClientSidePage(“Home.aspx”); var clientSideComponent=homePage.Ava
SharePointPnPCoreOnline
NuGet包添加web部件时,主页上的所有现有web部件都将被删除
以下是我的配置代码(为简洁起见简化):
var homePage=clientContext.Web.LoadClientSidePage(“Home.aspx”);
var clientSideComponent=homePage.AvailableClientSideComponents()
.SingleOrDefault(csc=>csc.Id.Equals(“{}”,StringComparison.OrdinalIgnoreCase));
ClientSideWebPart webPart=新的ClientSideWebPart(clientSideComponent);
CanvasSection节=新建CanvasSection(主页,CanvasSectionTemplate.OneColumn,0);
主页。节。添加(节);
homePage.Save();
homePage.AddControl(webPart,section.Columns[0]);
homePage.Save();
homePage.Publish();
当站点刚刚设置,主页尚未修改时:
- 该页面显示一组默认web部件。例如,如果我选择了“主题”设计,我可以看到
- 一个全宽部分,包含一个“英雄”web部件,有五个平铺,以及一些欢迎信息和链接
- “一栏”部分,包含多个web部件:新闻、事件、文档、快速链接和个人资料
- 从“SitePages”库下载的页面内容不包含
元素,因此没有明确定义的web部件 - 这些web部件的内容来自
文件https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-09-20.008/sp-pages-assembly_en-us_36e69c06b20e347fb4426bfdff916a8e.js
- web部件内容以当前用户的语言翻译
- 保留默认的web部件
- 在“SitePages”中存储的页面中,我可以在元素
中看到原始web部件和我的web部件 - 它的初始内容不再被翻译,但仅以第一次编辑页面的用户的语言提供
因此,我的问题是:有没有一种方法可以通过编程将web部件添加到新配置的现代网站(团队或通信)的主页,而不删除默认web部件?找到答案了吗?不幸的是,没有。我必须明确规定所有默认web部件。我这样做了:1)在页面中做一些更改2)保存CanvasContent1字段的内容3)将该内容存储在我的设置解决方案中,用占位符替换特定的URL和ID,使其充当模板4)设置新站点时,用站点特定的ID和URL替换占位符5)手动设置字段“CanvasContent1”.你找到答案了吗?不幸的是没有。我必须明确规定所有默认web部件。我这样做了:1)在页面中做一些更改2)保存CanvasContent1字段的内容3)将该内容存储在我的设置解决方案中,用占位符替换特定的URL和ID,使其充当模板4)设置新站点时,用站点特定的ID和URL替换占位符5)手动设置字段“CanvasContent1”.
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();