Recently I've been working on a project that involved some heavy branding of a custom publishing site.
I had to create the following custom items:
- Publishing Site Definitions
- Master Pages
- Site Columns
- Content Types (Using the custom site columns)
- Page Layouts (Using the custom content types)
- Images
- CSS Files
To accomplish this I created some custom site definitions and deployed the necessary branding files via a feature that was attached to the site definition. However, when my site definition was created my custom content types were not attached to the pages library resulting in a page that correctly used my page layout but was lacking the support fields behind the scenes.
To remedy this I had to create an additional feature which I called my ContentTypeBindingFeature and attached it to my site definition. This solved my problem.
Example code below:
feature.xml
<?xml version="1.0" encoding="utf-8" ?>
<Feature
Id="INSERT_YOUR_GUID"
Title="Content Type Binder"
Description="Binds a specified content type to the pages library"
Scope="Web"
Hidden="TRUE"
Version="1.0.0.0"
xmlns="http://schemas.microsoft.com/sharepoint/">
<elementmanifests>
<elementmanifest location="ContentTypeBinding.xml">
</elementmanifests>
</feature>
ContentTypeBinding.xml
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ContentTypeBinding ContentTypeId="INSERT_YOUR_CONTENT_TYPE_ID" ListUrl="Pages" />
</Elements>