[英]How to insert a header on SharePoint page
我有一個非常簡單的要求,但是當然與CSOM一樣,要實現任何目標似乎都很困難。 我確實有解決方案,但是現在網站模板已更改(在我的控制范圍之外),不再起作用,並且我不知道如何調試此模板。
需求
將簡單的標頭添加到現有的SharePoint頁面。
舊解決方案
過去效果很好。 我輸入了頁面名稱,Web部件xml和區域詳細信息(我不知道我是如何發現那些僅用代碼插入Web部件就顯得非常荒謬的原因的。為什么?...)
當我現在嘗試時,我得到
指定的對象不屬於列表
在第二個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();
}
我嘗試了這種解決方案,但我得到的只是
指定的對象不屬於列表
再說一次...
僅添加1個標頭有多難?
檢查以下解決方案:
1.您可以在當前站點頁面中添加“?contents = 1”,並刪除使用CSOM代碼添加的自定義Web部件。
2.使用SharePoint Designer打開網站頁面,然后在“高級模式”下進行編輯。
3.在“ PlaceHolderMain”控件下添加Header 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代碼來實現它。
如果要使所有頁面都具有自定義標題,我們可以在母版頁中添加一些代碼以使其起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.