我有一个非常简单的要求,但当然CSOM的情况似乎很难实现。我确实有一个解决方案,但现在网站模板已经改变(在我的控制之外)没有任何工作,我不知道如何调试它。
要求
向现有SharePoint页面添加一个简单的标题。
旧解决方案
这曾经很棒。我传入了页面名称,网页部分xml和区域的详细信息(我不知道我是如何找到那些看似荒谬复杂的只是为了插入带有代码的网页部分......为什么?...)
当我现在尝试时,我得到了
指定的对象不属于列表
在第二个ExecuteQuery()
private void InsertWebPart(ClientContext clientContext, string webPartXml, string markerTemplate,
string pagePath, string zoneId, int zoneIndex, string description, string content, string fieldName)
{
var relUrl = new Uri(baseUrl).AbsolutePath;
clientContext.Credentials = credentials;
var web = clientContext.Web;
var page = clientContext.Web.GetFileByServerRelativeUrl($"{relUrl}/{pagePath}");
var webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
var importedWebPart = webPartManager.ImportWebPart(webPartXml);
var webPart = webPartManager.AddWebPart(importedWebPart.WebPart, zoneId, zoneIndex);
clientContext.Load(webPart);
clientContext.ExecuteQuery();
var marker = string.Format(markerTemplate, webPart.Id);
var item = page.ListItemAllFields;
clientContext.Load(item);
clientContext.ExecuteQuery();
item[fieldName] = marker + item[fieldName];
item.Update();
clientContext.ExecuteQuery();
}
我尝试了this solution,但我得到的只是
指定的对象不属于列表
再次......有人可以建议吗?
只添加1个标题有多难?
答案 0 :(得分:1)
检查以下解决方案:
1.您可以添加"?contents = 1"在当前站点页面中,删除使用CSOM代码添加它的自定义Web部件。
2.使用SharePoint设计器打开网站页面,然后在高级模式下进行编辑。
3.在" PlaceHolderMain"下添加标题HTML代码和JavaScript代码。控制。
示例代码:
<div id="customHeader" style="height:20px;width:auto;background-color:green">Test</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function () {
$("#ms-designer-ribbon").before($("#customHeader"));
});
</script>
4.保存页面。
如果您无法使用SharePoint设计器,我们还可以使用脚本编辑器Web部件/内容编辑器Web部件和一些HTML代码来实现它。
如果您想让所有页面都有自定义标题,我们可以在母版页中添加一些代码以使其正常工作。