如何在 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 代码来实现它。
如果你想让所有的页面都有自定义页眉,我们可以在母版页中添加一些代码来实现它。
我有一个非常简单的要求,但当然,就像 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 代码来实现它。
如果你想让所有的页面都有自定义页眉,我们可以在母版页中添加一些代码来实现它。