How to Create Publishing Pages using Custom Page Layout Programmatically using Client Side Object Model (CSOM) in SharePoint Office 365


Sathish Nadarajan
SharePoint MVP
Published On :   10 Sep 2016
Visit Count
Today :  12    Total :   4662
Plan, Migrate, Secure, Report
SharePoint & Office 365 Tool. Simple & Easy to Use. 15-Day Trial!

SharePoint Office 365 Tool
Simple & Powerful Tool for Migration, Security & Reporting. Free Trial


In the earlier article, we saw how to create the Custom page Layout using the Design Manager. In this article, as a continuation, let us see, how to create a Page using that Layout programmatically using CSOM.

The Code is straight forward. As usual, I have created a console to test this functionality.

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 using Microsoft.SharePoint.Client;
 using System.Security;
 using Microsoft.Online.SharePoint.TenantAdministration;
 using OfficeDevPnP.Core;
 using Microsoft.SharePoint.Client.Publishing;
 
 namespace Console.Office365
 {
     class Program
     {
         static void Main(string[] args)
         {
             CreatePageWithCustomLayout();
         }
 
 
         public static void CreatePageWithCustomLayout()
         {
             OfficeDevPnP.Core.AuthenticationManager authMgr = new OfficeDevPnP.Core.AuthenticationManager();
 
             string siteUrl = "https://*****.sharepoint.com/sites/PublishingSite/";
             string userName = "Sathish@*****.onmicrosoft.com";
             string password = "************";
 
             using (var ctx = authMgr.GetSharePointOnlineAuthenticatedContextTenant(siteUrl, userName, password))
             {
                 Web web = ctx.Web;
                 ctx.Load(web);
                 ctx.ExecuteQueryRetry();
 
                 var layout = web.GetPageLayoutListItemByName("MyPageLayout");
                 ctx.Load(layout);
                 ctx.Load(layout, l => l.DisplayName);
                 ctx.ExecuteQueryRetry();
 
                 PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(ctx, web);
                 ctx.Load(publishingWeb);
 
                 PublishingPageInformation publishingPageInfo = new PublishingPageInformation();
                 publishingPageInfo.Name = "MyPage2.aspx";
                 publishingPageInfo.PageLayoutListItem = layout;
 
                 PublishingPage publishingPage = publishingWeb.AddPublishingPage(publishingPageInfo);
 
                 //publishingPage.ListItem.File.CheckOut();
 
                 ctx.Load(publishingPage);
                 ctx.Load(publishingPage.ListItem.File);
                 ctx.ExecuteQueryRetry();
 
                 ListItem listItem = publishingPage.ListItem;
 
                 listItem["MySiteColumn"] = "Test";
                 
 
                 listItem.Update();
 
                 publishingPage.ListItem.File.CheckIn(string.Empty, CheckinType.MajorCheckIn);
                 publishingPage.ListItem.File.Publish(string.Empty);
 
                 ctx.Load(publishingPage);
 
                 ctx.ExecuteQueryRetry();
             }
         }
     }
     
 }
 

Happy Coding,

Sathish Nadarajan.

SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Categories

Migratiin Tools for SharePoint