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

Sathish Nadarajan
 
Solution Architect
September 10, 2016
 
Rate this article
 
Views
9640

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.

Author Info

Sathish Nadarajan
 
Solution Architect
 
Rate this article
 
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 15+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business ...read more
 

Leave a comment