Bare-Bones Master Page Template
Turn Master Page files into a C1 CMS Page template
For a Master Page (.master and .master.cs files) to serve a standard C1 CMS Page template, it should meet the minimum requirements to where it should be located and what is should include:
- The Master Page files should be put in
~/App_Data/PageTemplates. - The Web Form class in use must inherit from the
MasterPagePageTemplateclass. - At least the
TemplateId(GUID) property must be implemented to set the template's unique ID. - [not required] It is a good practice to also implement the
TemplateTitle(string) property that sets the template's title visible in the CMS Console. Otherwise, the filename will be used instead. - At least one
XhtmlDocumentproperty must be declared with aPlaceholderattribute. (It will serve as a standard C1 CMS content placeholder.) - In the web form (.master) the <c1:Render/> element should be used to render the content of the declared placeholder (from Step 4).
- [not required] It is also a good practice to use the <c1:Title/> element to set the page title <title></title> via the template.
.master
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="BareBonesMasterPageTemplate.master.cs" Inherits="MyPageTemplate" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title><c1:Title runat="server"/></title>
</head>
<body>
<c1:Render Markup="<%# Content %>" runat="server" />
</body>
</html>
.master.cs
using System;
using Composite.Core.Xml;
using Composite.Core.PageTemplates;
using Composite.Plugins.PageTemplates.MasterPages;
public partial class MyPageTemplate : MasterPagePageTemplate
{
public override Guid TemplateId
{
get { return new Guid("25de2e26-ab15-4490-8501-b3e8dcb90822"); }
}
[Placeholder(Id = "content", Title = "Main Content", IsDefault = true)]
public XhtmlDocument Content { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}The above sample code/markup is enough to get a Master Page based template in C1 CMS.

