SharePoint 2007 : Creer une MasterPage et la deployer via une feature

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 :

  1. Ouvrez le répertoire FEATURES de votre serveur SharePoint
  2. Créez un nouveau répertoire CustomMasterPage par exemple
  3. A l'intérieur de ce répertoire, créez deux fichiers : Feature.xml et ProvisionedFiles.xml
  4. 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.

  5. 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é !!

  6. 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>

  7. Sauvez le fichier, recyclez le pool d'application (via ce petit tool par exemple) ou lancez un IISRESET
  8. Installez la feature via cette commande : stsadm -o installfeature -name CustomMasterPage
  9. 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. Big Smile

 <Philippe/>

Publié jeudi 3 mai 2007 14:56 par phil
Classé sous , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: SharePoint 2007 : Creer une MasterPage et la deployer via une feature @ jeudi 3 mai 2007 15:18

Pas mal du tout, mais attention.

Pour l'activation de la master Page, la seconde solution proposée "Interface SharePoint : Site Actions -&gt; Site Settings -&gt; Modify All Site Settings -&gt; Master page, sélectionnez la MasterPage", ne fonctionne que sur des plateforme MOSS.

Une installation WSS ne possède pas cette gestion des Master Page.

Si vous êtes dans ce cas, il faut prendre le Paster Picker de Renaud Comte :

- http://www.codeplex.com/SPMasterPicker

Romelard Fabrice [MVP]

ROMELARD Fabrice

# re: SharePoint 2007 : Creer une MasterPage et la deployer via une feature @ jeudi 3 mai 2007 15:37

Effectivement !! Je précise illico.

Merci ^^

phil

About phil

Philippe Sentenac est Consultant SharePoint à Wygwam en région Parisienne. Il intervient essentiellement sur des missions liées à SharePoint (2007 et 2010 ) mais aussi autour du Web 2.0. Plus généralement, il s'intéresse à l'ASP.Net (MVC) , à Silverlight, et à tout ce qui est orienté Web en rapport avec les nouvelles technologies, qu'il pratique depuis 2006. Féru de développement, il est passionné par les problématiques de méthodologies et d'industrialisation du développement.

Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01