Avec l'arrivée de SharePoint 2007 et son intégration à ASP.NET 2.0 viennent entre autres fonctionnalités, les masterpages.
Une masterpage permet de définir une structure et une interface commune pour votre site avec des élements récurrents comme les en-têtes de page, pieds de page, menu, etc ... Un des avantages étant bien sûr de faciliter la maintenance de vos sites en évitant de dupliquer tous ces élements dans toutes vos pages.
Il ne vous reste plus qu'à définir des éléments dits ContentPlaceHolder qui vous permettront de spécifier où placer votre contenu.
Concernant SharePoint, les masterpages sont stockées dans une galerie spécifique nommée Masterpage et accessible depuis le site ou la collection de site. Par défaut cette galerie contient une MasterPage nommée default.master qui contient de nombreux ContentPlaceHolder où seront placés plusieurs élements comme le BreadCrumb (chemin d'accès), le nom de l'utilisateur actuellement logué, la barre de navigation et tant d'autres.
Mais supposons que vous deviez créer un nouveau design pour vos sites ou simplement modifier la masterpage existante, comment allez-vous la mettre à disposition de votre site simplement et surtout par où commencer la création de la masterpage ?
Plutôt que de partir de la default.master et de faire des modifications à partir de SharePoint Designer ou de Visual Studio par exemple, je vous conseille de partir d'une MasterPage de base ou minimale (soit celle fournie par Microsoft via la MSDN, soit celle fournie par Heater Solomon).
A partir de là, libre à vous de faire vos modifications, rajouter vos CSS, vos éléments de design, rajouter des images, voire du javascript et même cacher certains ContentPlaceHolders afin de coller au mieux à vos besoins.
Maintenant il va falloir déployer tout cela, et on va le faire via une feature ! Voilà les étapes successives :
- Ouvrez le répertoire FEATURES de votre serveur SharePoint
- Créez un nouveau répertoire CustomMasterPage par exemple
- A l'intérieur de ce répertoire, créez deux fichiers : Feature.xml et ProvisionedFiles.xml
- Le début de votre fichier ProvisionedFiles devrait ressembler à quelque chose comme cela :
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="OSGMasterPages" Url="_catalogs/masterpage" Path="MasterPages" RootWebOnly="TRUE">
<File Url="Sample.master" Type="GhostableInLibrary">
<Property Name="ContentType" Value="Ma MasterPage Custom" />
<Property Name="PublishingPreviewImage"
Value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/sample.png,
~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/sample.png" />
<Property Name="MasterPageDescription" Value="Exemple de MasterPage Custom" />
</File>
</Module>
<Module Name="PublishingLayoutsPreviewImages" Url="_catalogs/masterpage" IncludeFolders="??-??" Path="" RootWebOnly="TRUE">
<File Url="Sample.png" Name="Preview Images/Sample.png" Type="GhostableInLibrary">
</File>
</Module>
</Elements>
A vous par la suite de la compléter avec vos fichiers images, css, etc... Le tout sous le même modèle d'élément Module et File.
- Une fois, vos modifications terminées, sauvegardez le fichier en question et organisez votre arborescence de dossier de cette manière (suivant votre localisation, vous devriez avoir du fr-fr plutôt que en-us). A noter que j'utilise des dossiers Images et Styles, vous n'êtes pas obligé !!
- Il ne vous reste plus qu'à écrire un fichier de feature très classique comme :
<Feature Id="C4AAE4D3-0A62-4717-AA37-B6BABD7A2EA0"
Title="Ma Custom Master Page"
Description="Ma Description de Custom MasterPage"
Version="12.0.0.0"
Scope="Site"
Hidden="False"
DefaultRessourceFile="core"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="ProvisionnedFiles.xml"/>
</ElementManifests>
</Feature>
- Sauvez le fichier, recyclez le pool d'application (via ce petit tool par exemple) ou lancez un IISRESET
- Installez la feature via cette commande : stsadm -o installfeature -name CustomMasterPage
- Activez la feature sur le site souhaité, soit via stsadm soit via l'interface du site Site Actions -> Site Settings -> Modify All Site Settings -> Site Collection Features
Et enfin, il faut lier la MasterPage nouvellement déployée aux pages Layouts. Ici plusieurs façons de s'y prendre :
- SharePoint Designer : Connectez vous au site, sélectionnez le répertoire _catalogs/masterpage, clic droit sur la MasterPage souhaitée. Vous avez le choix entre Default ou Custom. Tout dépend si vos pages de layouts (que vous trouverez dans SiteTemplates) font référence à ~masterurl\default.master ou ~masterurl\custom.master
- Interface SharePoint : Site Actions -> Site Settings -> Modify All Site Settings -> Master page, sélectionnez la MasterPage. (Disponible uniquement sous MOSS, sinon vous avez la possibilité d'utiliser SPMasterPicker disponible sur CodePlex)
- Modèle Objet : En initialisant la propriété web.CustomMasterUrl ou web.MasterUrl de votre site.
Et là soit tout est cassé, soit vous avez un nouveau design. 
<Philippe/>