This article is a to ensure how to create a simple SharePoint 2016 Page layout without using
- Share Point designer
- Design Manager
Before doing anything you need to create the base of the layout.
Following placeholders are minimal and commonly used in any template.
- PlaceHolderAdditionalPageHead
- PlaceHolderPageTitle
- PlaceHolderMain
Place Holders
PlaceHolderAdditionalPageHead
This place holder is used to defined additional CSS and other scripts and inline CSS if you have any.
We will be using this to register a CSS and register a different CSS for the SharePoint Edit Mode
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderAdditionalPageHead"
runat
=
"server"
>
<!—Your code goes here-->
</
asp:Content
>
PlaceHolderPageTitle
This place holder will be mainly for the page title.
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderPageTitle"
runat
=
"server"
>
<!—Your code goes here-->
</
asp:Content
>
PlaceHolderMain
This is the main section for your temple. here you can define web part zones or any other HTML code segments such as Bootstrap or static HTML as you want.
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderMain"
runat
=
"server"
>
<!—Your code goes here-->
</
asp:Content
>
Base Template
Adding standard SharePoint controls, you can make your base template as follows.
<%@ Page Language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderAdditionalPageHead"
runat
=
"server"
>
<!-- Styles for edit mode only-->
</
asp:Content
>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderPageTitle"
runat
=
"server"
>
<!-- Styles for edit mode only-->
</
asp:Content
>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderMain"
runat
=
"server"
>
<!-- Styles for edit mode only-->
</
asp:Content
>
Extend your Template
PlaceHolderAdditionalPageHead
First, add general CSS registration to this section
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
Then I'm going to define a CSS for EDIT mode, this will be really needful when you are hiding some tags when not in the Edit Mode.
<
PublishingWebControls:EditModePanel
runat
=
"server"
>
<!-- Styles for edit mode only-->
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/editmode15.css %>"
After="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
</
PublishingWebControls:EditModePanel
>
then you will need to add other scripts or CSS formatting if necessary.
<
style
type
=
"text/css"
>
<!-- Styles -->
</
style
>
<
script
type
=
"text/javascript"
>
// your code
</
script
>
Finally, you will have your AdditionalPageHead as below.
AdditionalPageHead
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderAdditionalPageHead"
runat
=
"server"
>
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
<
PublishingWebControls:EditModePanel
runat
=
"server"
>
<!-- Styles for edit mode only-->
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/editmode15.css %>"
After="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
</
PublishingWebControls:EditModePanel
>
<
style
type
=
"text/css"
>
<!-- Styles -->
</
style
>
<
script
type
=
"text/javascript"
>
// your code
</
script
>
</
asp:Content
>
PlaceHolderPageTitle
just adding the SharePoint Page Title here.
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderPageTitle"
runat
=
"server"
>
<
SharePointWebControls:FieldValue
FieldName
=
"Title"
runat
=
"server"
/>
</
asp:Content
>
PlaceHolderMain
Here goes with one web part zone for simplicity.
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderMain"
runat
=
"server"
>
<
WebPartPages:WebPartZone
runat
=
"server"
Title
=
"Top Left"
ID
=
"TopLeftZone"
><
ZoneTemplate
></
ZoneTemplate
></
WebPartPages:WebPartZone
>
</
asp:Content
>
Final Template
<%@ Page Language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderAdditionalPageHead"
runat
=
"server"
>
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
<
PublishingWebControls:EditModePanel
runat
=
"server"
>
<!-- Styles for edit mode only-->
<
SharePointWebControls:CssRegistration
name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/editmode15.css %>"
After="<% $SPUrl:~sitecollection/Style Library/~language/Themable/Core Styles/pagelayouts15.css %>" runat="server"/>
</
PublishingWebControls:EditModePanel
>
<
style
type
=
"text/css"
>
<!-- Styles -->
</
style
>
<
script
type
=
"text/javascript"
>
// your code
</
script
>
</
asp:Content
>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderPageTitle"
runat
=
"server"
>
<
SharePointWebControls:FieldValue
FieldName
=
"Title"
runat
=
"server"
/>
</
asp:Content
>
<
asp:Content
ContentPlaceHolderId
=
"PlaceHolderMain"
runat
=
"server"
>
<
WebPartPages:WebPartZone
runat
=
"server"
Title
=
"Top Left"
ID
=
"TopLeftZone"
><
ZoneTemplate
></
ZoneTemplate
></
WebPartPages:WebPartZone
>
</
asp:Content
>
Comments