如何在 SharePoint 页面上插入 header

How to insert a header on SharePoint page

我有一个非常简单的要求,但当然,就像 CSOM 的情况一样,似乎很难实现任何目标。我确实有一个解决方案,但现在网站模板已经改变(在我的控制之外),一切都不再有效,我不知道如何调试它。

要求

向现有 SharePoint 页面添加一个简单的 header。

旧解

这曾经很管用。我传入了页面名称、Web 部件 xml 和区域的详细信息(我不知道我是如何找到这些的,只是插入带有代码的 Web 部件似乎非常复杂......为什么?... )

当我现在尝试时,我得到

the object specified does not belong to a list

二号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 但我得到的只是

the object specified does not belong to a list

再次......请有人指教吗?

简单地加 1 有多难header?

检查以下解决方案:

1.You 可以在当前站点页面中添加“?contents=1”,并删除使用 CSOM 代码添加的自定义 Web 部件。

2.Open 使用 SharePoint 设计器的网站页面,并在高级模式下编辑。

3.Add Header HTML代码和JavaScript代码在"PlaceHolderMain"控制下。

示例代码:

<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.Save 页面。

如果您不能使用 SharePoint 设计器,我们也可以使用脚本编辑器 Web part/content 编辑器 Web 部件和一些 HTML 代码来实现它。

如果你想让所有的页面都有自定义页眉,我们可以在母版页中添加一些代码来实现它。