SharePoint master pages are sort of designed to be created in SharePoint Designer. This isn’t much good, though, if you want to redeploy a master page to another or multiple systems. Also, a master page that has been created in SharePoint designer is “Customized” – that is, it is stored in the database rather than as a file on the file system. This makes it a bit slower.
What I wanted to be able to do for a customer was to create a SharePoint feature that would deploy all my physical files, and in such a way that they weren’t customised. Well, I think I’ve done that.
I pretty much followed the gist of this blog entry by Chris O’Brien (his blog is excellent and well worth a read).
You can also get a feel for it by examining the PublishingLayouts feature that comes standard in MOSS. That feature deploys all of the OOB master pages, etc..
In short, the approach is:
- Create design in SharePoint Designer
- Copy and paste master page code to a new aspx file in your feature, with the same name as the file in SharePoint Designer. (Do not just save the file in SharePoint Designer to the file system. It mucks up the links. Copy and Paste the code – just as Chris says to. Guess who forgot?)
- Save all other relevant files to the your feature.
- Create the Feature.xml file
- Create the Elements manifest file. Note that the XML is case sensitive, and the case used in the blog entry above is wrong.
- Make sure that the permissions on the feature folder are correct and inherited by child files and folders.
- Run “stsadm -o installfeature -name featurename”
- Activate feature at site or sitecollection level.
Attached is an example feature that installs a (rubbish) master page I’ve created called ‘Cairngorm’. To install it:
- Unzip the archive
- Copy the CairngormMaster folder to your Features folder in 12 Hive
- Check its permissions
stsadm -o installfeature -name CairngormMaster
- Go to the Site Collection Features page, and activate it.
You should now find that you can select the ‘Cairngorm’ master page from the ‘Site Settings > Master Pages’ page. Select it for your master pages, and you should find your pages go a bit black and orange! You can get the dodgy design I came up with here, but please just use as an example – it looks bleedin’ awful.