Site definition
Première partie - Architecture de base
10/02/2010
2558 lectures
0 commentaire
5/5 (2 votes)
Lorsque vous créez un nouveau site web, il vous est toujours demandé de choisir le type de site que vous voulez créer (Site d'équipe, site de publication,...). Il est tout à fait possible de créer des définitions de site personnalisées pour que celles-ci apparaissent dans la liste des templates proposés.
Dans ce cours, nous allons voir comment créer une définition de site basique. En fait, ce sera exactement la même que le site d'équipe, mais cela nous permettra de nous familiariser un peu avec l'architecture utilisée pour créer notre propre définition de site. Nous allons directement utiliser Visual Studio pour empaqueter notre site definition/I] dans une solution.
Ouvrez donc [I]Visual Studio, créez un nouveau projet de type WSP Builder Project et nommez-le MyTeamSite.
Nous allons maintenant procéder étape par étape pour construire notre définition de site. Il faut tout d'abord savoir que ce qui concerne le plus gros des définitions de site se trouve dans le dossier C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates. Ce dossier va en contenir d'autres qui seront chacun destinés à contenir une définition de site, nous allons donc devoir, nous aussi, créer un dossier à cet emplacement pour créer notre définition de site.
Créez donc un dossier TEMPLATE dans le dossier 12 de votre solution et un dossier SiteTemplates dans le dossier TEMPLATE. Créez ensuite un dossier nommé MyTeamSite dans le dossier SiteTemplates de votre solution. Ce dossier contiendra notre définition de site. Nous allons nous baser sur celle d'un site d'équipe. Cliquez avec le bouton droit de votre souris sur le dossier MyTeamSite et choisissez Add > Existing Item. Allez ensuite chercher les deux fichiers suivants : 12\TEMPLATE\SiteTemplates\sts\default.aspx et 12\TEMPLATE\SiteTemplates\sts\defaultdws.aspx. sts est le dossier contenant la définition d'un site d'équipe, nous nous contentons donc de "copier" son contenu. Créez ensuite un dossier nommé xml dans votre dossier MyTeamSite (bouton droit sur le dossier > New Folder). Ajoutez ensuite le fichier 12\TEMPLATE\SiteTemplates\sts\xml\ONET.xml dans ce dossier. Au final, votre architecture devrait être la suivante :
Nous n'allons donc pas modifier cette structure pour cet exemple. Nous allons maintenant nous occuper de l'étape nécessaire pour ajouter notre définition de site à la liste des templates disponible lors de la création d'un site. Si vous ouvrez le dossier 12\TEMPLATE\1033\XML, vous y verrez un fichier nommé WEBTEMP.xml. Ce fichier va contenir les définitions des templates de site pour les faire apparaitre dans la liste de ceux disponibles à la création d'un site. Nous allons donc devoir ajouter notre définition à cette liste. Nous n'allons bien évidemment pas modifier directement ce fichier. En effet, il va nous suffire de placer un fichier xml avec un nom bien précis pour que celui-ci soit fusionné avec le fichier WEBTEMP.xml.
Créez donc un dossier 1033\XML dans le dossier TEMPLATE de votre solution et ajoutez-y un fichier xml nommé webtempmyteamsite.xml. Celui-ci devra contenir ceci :
Il y a plusieurs choses à noter dans ce que nous venons de faire. Premièrement, la manière de nommer notre fichier xml pour qu'il soit fusionné avec le fichier WEBTEMP.xml est webtemp*.xml. Il suffit donc de remplacer l'astérisque par un nom explicite. Ensuite, nous avons placé ce fichier dans le dossier 1033. Cela voudra donc dire qu'il ne sera disponible que pour les sites en anglais. Si vous voulez également le rendre disponible dans une autre langue, il suffit de placer également ce fichier dans un dossier correspondant au code de la langue (1033 = anglais, 1036 = français,...).
Une définition de site est identifiée par un élément Template. Nous définissons le nom de ce template sur MyTeamSite et son ID sur 1001. Définissez toujours un ID supérieur à 1000. Nous avons ensuite un élément Configuration qui va contenir certaine propriété servant à configurer notre définition de site. Les ID des configurations doivent toujours commencer à 0 et s'incrémenter pour chaque nouvelle configuration. Ces propriétés seront appliquées pour afficher notre définition de site lorsqu'on le sélectionnera dans la liste de celles disponibles lors de la création d'un nouveau site.
Il reste une dernière étape à réaliser pour que notre définition de site soit utilisable. Actuellement, il subsiste certains bugs au niveau de SharePoint Designer. Pour palier à ces bugs, il faut activer certaines features pour notre définition de site. Pour cela, nous utilisons le système de feature stapling, c'est à dire, des features qui sont activées à la création d'un site basé sur un certain template. Pour utiliser le système de feature stapling, il faut empaqueter cela dans une autre feature. Il faudra donc s'assurer que celle-ci sera activée avant de créer un site basé sur notre template. Pour cela, nous allons créer une feature de ferme.
Cliquez donc avec le bouton droit de votre souris sur votre projet et choisissez Add > New Item, choisissez Blank feature et nommez-la MyTeamSiteFeatureStapling. Dans l'écran suivant, choisissez Farm comme Scope pour que cette feature soit au niveau de la ferme.
Pour savoir ce que nous devons insérer dans le fichier Elements.xml, c'est très simple. Effectivement, il existe déjà une feature qui va activer différentes features pour les définitions de site par défaut de SharePoint. Celle-ci se trouve dans le dossier 12\TEMPLATE\FEATURES\BaseSiteStapling.
Ouvrez donc le fichier basesitestapling.xml. Ce fichier contient des éléments du type FeatureSiteTemplateAssociation qui vont permettre d'associer une activation de feature avec une définition de site. Nous allons simplement récupérer celles qui correspondent à STS#0 pour le TemplateName. Cet attribut permet de définir à quel template est associée l'activation de la feature. STS correspond à l'attribut Name de l'élément Template du fichier webtemp*.xml et #0 correspond à l'ID de la configuration. Copiez/collez donc les deux lignes suivantes dans votre fichier Elements.xml :
Bien entendu, il va falloir remplacer STS#0 par MyTeamSite#0. Compilez et déployez maintenant votre solution. Rendez-vous ensuite dans la centrale d'administration et créez un nouveau site dans la Web Application de votre choix :
L'onglet Customs site definitions apparaît donc bien comme nous l'avons spécifié dans le fichier webtempmyteamsite.XML. Il vous suffit alors simplement de choisir My Team Site sous cet onglet et de créer votre site sur base de ce template.
Dans les cours suivants, nous entrerons plus en détails en ce qui concerne la création de définition de site.
Télécharger l'exemple
Dans ce cours, nous allons voir comment créer une définition de site basique. En fait, ce sera exactement la même que le site d'équipe, mais cela nous permettra de nous familiariser un peu avec l'architecture utilisée pour créer notre propre définition de site. Nous allons directement utiliser Visual Studio pour empaqueter notre site definition/I] dans une solution.
Ouvrez donc [I]Visual Studio, créez un nouveau projet de type WSP Builder Project et nommez-le MyTeamSite.
Nous allons maintenant procéder étape par étape pour construire notre définition de site. Il faut tout d'abord savoir que ce qui concerne le plus gros des définitions de site se trouve dans le dossier C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates. Ce dossier va en contenir d'autres qui seront chacun destinés à contenir une définition de site, nous allons donc devoir, nous aussi, créer un dossier à cet emplacement pour créer notre définition de site.
Créez donc un dossier TEMPLATE dans le dossier 12 de votre solution et un dossier SiteTemplates dans le dossier TEMPLATE. Créez ensuite un dossier nommé MyTeamSite dans le dossier SiteTemplates de votre solution. Ce dossier contiendra notre définition de site. Nous allons nous baser sur celle d'un site d'équipe. Cliquez avec le bouton droit de votre souris sur le dossier MyTeamSite et choisissez Add > Existing Item. Allez ensuite chercher les deux fichiers suivants : 12\TEMPLATE\SiteTemplates\sts\default.aspx et 12\TEMPLATE\SiteTemplates\sts\defaultdws.aspx. sts est le dossier contenant la définition d'un site d'équipe, nous nous contentons donc de "copier" son contenu. Créez ensuite un dossier nommé xml dans votre dossier MyTeamSite (bouton droit sur le dossier > New Folder). Ajoutez ensuite le fichier 12\TEMPLATE\SiteTemplates\sts\xml\ONET.xml dans ce dossier. Au final, votre architecture devrait être la suivante :
Nous n'allons donc pas modifier cette structure pour cet exemple. Nous allons maintenant nous occuper de l'étape nécessaire pour ajouter notre définition de site à la liste des templates disponible lors de la création d'un site. Si vous ouvrez le dossier 12\TEMPLATE\1033\XML, vous y verrez un fichier nommé WEBTEMP.xml. Ce fichier va contenir les définitions des templates de site pour les faire apparaitre dans la liste de ceux disponibles à la création d'un site. Nous allons donc devoir ajouter notre définition à cette liste. Nous n'allons bien évidemment pas modifier directement ce fichier. En effet, il va nous suffire de placer un fichier xml avec un nom bien précis pour que celui-ci soit fusionné avec le fichier WEBTEMP.xml.
Créez donc un dossier 1033\XML dans le dossier TEMPLATE de votre solution et ajoutez-y un fichier xml nommé webtempmyteamsite.xml. Celui-ci devra contenir ceci :
Il y a plusieurs choses à noter dans ce que nous venons de faire. Premièrement, la manière de nommer notre fichier xml pour qu'il soit fusionné avec le fichier WEBTEMP.xml est webtemp*.xml. Il suffit donc de remplacer l'astérisque par un nom explicite. Ensuite, nous avons placé ce fichier dans le dossier 1033. Cela voudra donc dire qu'il ne sera disponible que pour les sites en anglais. Si vous voulez également le rendre disponible dans une autre langue, il suffit de placer également ce fichier dans un dossier correspondant au code de la langue (1033 = anglais, 1036 = français,...).
Une définition de site est identifiée par un élément Template. Nous définissons le nom de ce template sur MyTeamSite et son ID sur 1001. Définissez toujours un ID supérieur à 1000. Nous avons ensuite un élément Configuration qui va contenir certaine propriété servant à configurer notre définition de site. Les ID des configurations doivent toujours commencer à 0 et s'incrémenter pour chaque nouvelle configuration. Ces propriétés seront appliquées pour afficher notre définition de site lorsqu'on le sélectionnera dans la liste de celles disponibles lors de la création d'un nouveau site.
Il reste une dernière étape à réaliser pour que notre définition de site soit utilisable. Actuellement, il subsiste certains bugs au niveau de SharePoint Designer. Pour palier à ces bugs, il faut activer certaines features pour notre définition de site. Pour cela, nous utilisons le système de feature stapling, c'est à dire, des features qui sont activées à la création d'un site basé sur un certain template. Pour utiliser le système de feature stapling, il faut empaqueter cela dans une autre feature. Il faudra donc s'assurer que celle-ci sera activée avant de créer un site basé sur notre template. Pour cela, nous allons créer une feature de ferme.
Cliquez donc avec le bouton droit de votre souris sur votre projet et choisissez Add > New Item, choisissez Blank feature et nommez-la MyTeamSiteFeatureStapling. Dans l'écran suivant, choisissez Farm comme Scope pour que cette feature soit au niveau de la ferme.
Pour savoir ce que nous devons insérer dans le fichier Elements.xml, c'est très simple. Effectivement, il existe déjà une feature qui va activer différentes features pour les définitions de site par défaut de SharePoint. Celle-ci se trouve dans le dossier 12\TEMPLATE\FEATURES\BaseSiteStapling.
Ouvrez donc le fichier basesitestapling.xml. Ce fichier contient des éléments du type FeatureSiteTemplateAssociation qui vont permettre d'associer une activation de feature avec une définition de site. Nous allons simplement récupérer celles qui correspondent à STS#0 pour le TemplateName. Cet attribut permet de définir à quel template est associée l'activation de la feature. STS correspond à l'attribut Name de l'élément Template du fichier webtemp*.xml et #0 correspond à l'ID de la configuration. Copiez/collez donc les deux lignes suivantes dans votre fichier Elements.xml :
Bien entendu, il va falloir remplacer STS#0 par MyTeamSite#0. Compilez et déployez maintenant votre solution. Rendez-vous ensuite dans la centrale d'administration et créez un nouveau site dans la Web Application de votre choix :
L'onglet Customs site definitions apparaît donc bien comme nous l'avons spécifié dans le fichier webtempmyteamsite.XML. Il vous suffit alors simplement de choisir My Team Site sous cet onglet et de créer votre site sur base de ce template.
Dans les cours suivants, nous entrerons plus en détails en ce qui concerne la création de définition de site.
Télécharger l'exemple





0 commentaires
Ajouter un commentaire