Procédure : personnaliser la logique des contrôles d'étiquettes de variantes
Chaque page maître par défaut disponible dans Microsoft Office SharePoint Server 2007 pour la publication des sites, comme Default.Master, LeftNavFlyouts.Master, Stacked.Master et TopNavFlyouts.Master, contient une référence à un fichier appelé VariationsLabelMenu.ascx via un élément DelegateControl dans leur balisage, comme illustré ci-dessous.
<SharePoint:DelegateControl runat="server" ControlId="VariationsFlagControl" />
Le fichier VariationsLabelMenu.ascx contient la logique de rendu des étiquettes de variantes sur une page. Le contrôle d'étiquette de variantes est un contrôle utilisateur situé sur une page de variantes. Il affiche les pages de variantes correspondantes disponibles pour cette page pour que l'utilisateur puisse naviguer rapidement vers les autres variantes disponibles de la page.
Le fichier VariationsLabelMenu.ascx est défini dans le chemin d'accès \<Program Files>\Common Files\Microsoft Shared Debug\Web Server Extensions\12\Template\ControlTemplates
. La fonctionnalité de publication d'Office SharePoint Server 2007 enregistre l'élément DelegateControl dans \<Program Files>\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml
. Ce fichier XML pointe vers le fichier VariationsLabelMenu.ascx, qui fait que tous les sites associés au modèle de site « Intranet d'entreprise » sont rendus par VariationsLabelMenu.ascx. Par ailleurs, la page maître Default.Master de toutes les collections de sites de la batterie de serveurs contient le même rendu fourni par VariationsLabelMenu.ascx. Comme le fichier VariationsFlagControl.xml réside sur le système de fichiers du serveur Web frontal, le rendu ne peut pas varier d'une collection de sites à une autre.
Trois méthodes permettent de personnaliser la logique des contrôles d'étiquettes de variantes par défaut. Chaque approche a ses avantages et inconvénients et il convient de les considérer avec attention avant de porter votre choix sur l'une ou l'autre.
Modifier directement le fichier VariationsLabelMenu.ascx.
Il s'agit de la méthode la plus rapide pour modifier la logique. Vous la modifiez directement en fonction de vos besoins dans le fichier VariationsLabelMenu.ascx sur le système de fichiers du serveur Web frontal.
Notes
Vous devez mettre à jour le fichier VariationsLabelMenu.ascx sur chaque serveur. Toutes les collections de sites de la batterie de serveurs seront liées à la logique d'étiquette de variantes personnalisée que vous spécifiez.
Créer un fichier .ascx dans la galerie de la page maître et des mises en page.
L'implémentation de cette approche est décrite dans la première procédure, Pour créer un fichier .ascx dans la galerie de la page maître et des mises en page. À l'instar de la méthode précédente, cette approche fournit également une méthode simple et rapide de personnalisation par le biais d'une modification directe, sans problèmes de compilation et de déploiement de DLL. Par ailleurs, comme chaque collection de sites utilise son propre jeu de mises en page, cette approche permet de personnaliser la logique des contrôles d'étiquettes de variantes au niveau d'une collection de sites. Avec cette approche, vous devez également mettre à jour le fichier web.config de chaque serveur Web frontal.
Avertissement
Soyez prudent lorsque vous définissez l'indicateur AllowCompilation dans le fichier VariationsLabelMenu.aspx. L'utilisation de code en ligne peut permettre à une personne mal intentionnée d'injecter du code malicieux dans la page.
Créer un assembly précompilé.
L'implémentation de cette méthode est décrite dans la deuxième procédure, Pour créer un assembly précompilé. Cette approche ne présente aucun risque de sécurité lié à l'ouverture d'un élément de la galerie d'une page maître ou des mises en page pour l'exécution d'un code en ligne. À l'instar de la méthode de création du fichier .ascx, la personnalisation a lieu au niveau de la collection de sites. Cependant, vous devez recompiler l'assembly chaque fois que vous devez modifier la logique des contrôles d'étiquettes de variantes. Ainsi, cette méthode présente un cycle modification-test-déploiement plus long.
Notes
Vous devez déployer l'assembly sur tous les serveurs Web frontaux.
Pour créer un fichier .ascx dans la galerie de la page maître et des mises en page
Chargez le fichier VariationsLabelMenu.ascx dans la galerie de la page maître et des mises en page de la collection de sites.
Pour autoriser l'exécution de code en ligne de VariationsLabelMenu.ascx dans la galerie de la page maître et des mises en page, apportez les modifications suivantes au fichier web.config.
<SharePoint> <SafeControls> <!-- marks the VariationsLabelMenu.ascx as safe --> <SafeControl Src="/_catalogs/masterpage/VariationsLabelMenu.ascx" Safe="True" AllowRemoteDesigner="True" /> </SafeControls> <SafeMode ... > <!-- marks VariationsLabelMenu.ascx for ASP.NET compilation --> <PageParserPaths> <PageParserPath VirtualPath= "/_catalogs/masterpage/VariationsLabelMenu.ascx" CompilationMode="Always" AllowServerSideScript="False" AllowUnsafeControls="False" /> </PageParserPaths> </SafeMode> </SharePoint>
Remplacez les références au fichier VariationsLabelMenu.ascx sur le système de fichiers du serveur Web frontal par des références au fichier VariationsLabelMenu.ascx de la galerie de la page maître et des mises en page. Pour ce faire, vous disposez de trois méthodes au choix :
Supprimez entièrement le balisage DelegateControl de la page maître Default.Master, puis intégrez une référence au fichier VariationsLabelMenu.ascx dans la galerie de la page maître et des mises en page.
Faites une copie de la page maître Default.Master et renommez-la, par exemple Default2.master, puis faites en sorte que votre modèle de site utilise Default2.master. Dans Default2.master, vous pouvez remplacer les références au fichier VariationsLabelMenu.ascx sur le système de fichiers du serveur Web frontal par les références au fichier VariationsLabelMenu.ascx de la galerie de la page maître et des mises en page.
Pour les autres fichiers maîtres de publication, vous pouvez remplacer les références au fichier VariationsLabelMenu.ascx sur le système de fichiers du serveur Web frontal par les références au fichier VariationsLabelMenu.ascx de la galerie de la page maître et des mises en page.
Pour créer un assembly précompilé
Copiez le code de VariationsLabelMenu.ascx et créez un contrôle composite dans la DLL de votre assembly en utilisant les contrôles VariationsLabelEcbMenu et VariationHierarchicalDataSource comme contrôles enfants.
Modifiez l'inscription DelegateControl dans
\<Program Files>\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml
pour pointer vers le contrôle composite que vous avez créé, qui remplace la référence au fichier VariationsLabelMenu.ascx sur le système de fichiers du serveur Web frontal.Vous pouvez également supprimer entièrement le balisage DelegateControl de la page maître Default.Master et intégrer une référence au contrôle composite que vous avez créé.
Pour les autres fichiers maîtres de publication, vous pouvez remplacer les références au fichier VariationsLabelMenu.ascx par des références au contrôle composite que vous avez créé.