我需要使用CSOM来更改发布网络中现有发布页面的页面布局.我看到有CSOM对象PublishingWeb,但缺少获取发布页面的方法.
尽管在SharePoint 2013 CSOM 中引入了新的Microsoft.SharePoint.Client.Publishing命名空间,但与SSOM相比,它仍然是相对有限的API.例如,CSOM PublishingPage类不公开Layout像SSOM财产PublishingPage 呢.
以下示例允许在SharePoint 2010/2013中使用CSOM设置页面布局:
pageItem["PublishingPageLayout"] = new FieldUrlValue() { Url = "<page layout server relative url>", Description = "<page layout name>" };
Run Code Online (Sandbox Code Playgroud)
例
以下示例演示如何为Blank Web Part page页面设置页面布局:
var pagesList = ctx.Web.Lists.GetByTitle("Pages");
var pageItem = pagesList.GetItemById(listItemId);
pageItem["PublishingPageLayout"] = new FieldUrlValue() { Url = "/_catalogs/masterpage/BlankWebPartPage.aspx", Description = "Blank Web Part page" };
pageItem.Update();
ctx.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)
要为列表项设置内容类型,必须在列表中提供内容类型.以下方法用于此目的:
public static void SetListItemContentType(ListItem item, ContentType contentType)
{
var ctx = item.Context;
//1. Ensure Content Type is available in List
var list = item.ParentList;
var result = ctx.LoadQuery(list.ContentTypes.Where(ct => ct.Name == contentType.Name));
ctx.ExecuteQuery();
var listContentType = result.FirstOrDefault();
if (listContentType == null)
{
list.ContentTypes.AddExistingContentType(contentType);
list.Update();
ctx.ExecuteQuery();
}
//2. Set Content Type for List Item
item["ContentTypeId"] = contentType.Id;
item.Update();
ctx.ExecuteQuery();
}
Run Code Online (Sandbox Code Playgroud)
用法
var result = ctx.LoadQuery(ctx.Site.RootWeb.AvailableContentTypes.Where(ct => ct.Name == "Contoso Article Page"));
ctx.ExecuteQuery();
var pageContentType = result.FirstOrDefault();
var pagesList = ctx.Web.Lists.GetByTitle("Pages");
var pageItem = pagesList.GetItemById(7);
SetListItemContentType(pageItem, pageContentType);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7052 次 |
| 最近记录: |