Partager via


Contrôles de navigation

Dernière modification : lundi 1 novembre 2010

S’applique à : SharePoint Foundation 2010

Dans cet article
Barre de navigation
Barre de liens supérieure
Lancement rapide
Arborescence

Le chrome d'un site Web Microsoft SharePoint Foundation inclut un ensemble de contrôles dont le but est d'aider les utilisateurs à parcourir le site, en leur permettant de trouver plus facilement du contenu important, de connaître leur position actuelle dans le site et d'accéder rapidement à un emplacement précédent.

Vous pouvez trouver le balisage de ces contrôles dans la page maître de la page d'accueil du site Web. Dans SharePoint Foundation 2010, la page maître principale des pages de contenu et d'application est v4.master.

Notes

Pour plus d’informations sur les pages maîtres par défaut, voir Pages maîtres par défaut dans SharePoint Foundation.

Quatre principales aides à la navigation sont définies dans v4.master :

  • Barre de navigation

  • Barre de liens supérieure

  • Lancement rapide

  • Arborescence

Barre de navigation

La barre de navigation est un élément de navigation qui apparaît en haut des pages de contenu dans un site Web SharePoint Foundation, sur le ruban, juste à droite d'Actions du site. Elle se matérialise par une icône qui ressemble à un dossier sur lequel est superposée une flèche vers le haut. Lorsque le pointeur de la souris survole l'icône, une info-bulle affiche « Naviguer vers le haut ». Lorsque vous cliquez sur l'icône, un menu contextuel apparaît. Ce menu indique votre position actuelle dans la hiérarchie du site. Le fait de cliquer sur l'un des liens qui précède votre position actuelle ouvre cet emplacement, ce qui vous offre un moyen rapide de revenir à votre point de départ.

Dans v4.master, la barre de navigation est définie par le balisage suivant :

Notes

Pour faciliter la lecture du balisage, les expressions de ressources ("$Resources:wss,resource_id") sont remplacées par les valeurs de leurs chaînes localisées.

<asp:contentplaceholder id="PlaceHolderGlobalNavigation" runat="server">
    <SharePoint:PopoutMenu
        runat="server"
        ID="GlobalBreadCrumbNavPopout"
        IconUrl="/_layouts/images/fgimg.png"
        IconAlt="Navigate Up"
        IconOffsetX=0
        IconOffsetY=112
        IconWidth=16
        IconHeight=16
        AnchorCss="s4-breadcrumb-anchor"
        AnchorOpenCss="s4-breadcrumb-anchor-open"
        MenuCss="s4-breadcrumb-menu">
        <div class="s4-breadcrumb-top">
            <asp:Label 
                runat="server" 
                CssClass="s4-breadcrumb-header" 
                Text="This page location is:" />
        </div>
        <asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server">
            <SharePoint:ListSiteMapPath
                runat="server"
                SiteMapProviders="SPSiteMapProvider,SPContentMapProvider"
                RenderCurrentNodeAsLink="false"
                PathSeparator=""
                CssClass="s4-breadcrumb"
                NodeStyle-CssClass="s4-breadcrumbNode"
                CurrentNodeStyle-CssClass="s4-breadcrumbCurrentNode"
                RootNodeStyle-CssClass="s4-breadcrumbRootNode"
                NodeImageOffsetX=0
                NodeImageOffsetY=353
                NodeImageWidth=16
                NodeImageHeight=16
                NodeImageUrl="/_layouts/images/fgimg.png"
                RTLNodeImageOffsetX=0
                RTLNodeImageOffsetY=376
                RTLNodeImageWidth=16
                RTLNodeImageHeight=16
                RTLNodeImageUrl="/_layouts/images/fgimg.png"
                HideInteriorRootNodes="true"
                SkipLinkText="" />
            </asp:ContentPlaceHolder>
    </SharePoint:PopoutMenu>
    <div class="s4-die">
        <asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server" Visible="false">
        </asp:ContentPlaceHolder>
    </div>
</asp:contentplaceholder>

La première chose que vous pouvez remarquer sur ce balisage est que la barre de navigation entière est incluse dans un contrôle ContentPlaceHolder (ID="PlaceHolderGlobalNavigation"). Cela signifie que vous avez la possibilité de créer une page de contenu et d'ajouter un contrôle Content qui remplace le contenu par défaut défini dans la page maître.

La majorité du balisage est impliqué dans la définition du menu contextuel. Comme vous pouvez le voir dans le balisage, le menu est restitué par un contrôle PopoutMenu. Ce contrôle contient un contrôle Label pour l'en-tête du menu et un contrôle ListSiteMapPath pour les liens hypertexte qui permettent aux utilisateurs de parcourir le site Web. Le contrôle ListSiteMapPath est imbriqué dans un autre contrôle ContentPlaceholder (ID="PlaceHolderTitleBreadcrumb"), afin de pouvoir aussi être remplacé dans une page de contenu.

Le contrôle ListSiteMapPath obtient ses données de navigation à partir d'une paire de fournisseurs, SPSiteMapProvider et SPContentMapProvider. Le premier fournit des données sur les sites Web compris dans la hiérarchie des sites ; le second fournit des données sur le contenu du site, tel que les listes, les bibliothèques, les dossiers et les pages de site. Les deux fournisseurs de navigation dérivent de la classe SiteMapProvider qui est la source des données du plan de site sur les sites ASP.NET standard.

Notes

Les fournisseurs de navigation sont déclarés dans la section <system.web> du fichier web.config situé dans le répertoire racine de l'application Web sous le chemin Lecteur:\inetpub\wwwroot\wss\VirtualDirectories\ numéro_port\web.config.

Barre de liens supérieure

La barre de liens supérieure est une bande avec des onglets qui apparaît juste en dessous du titre et de la description du site Web. Le premier lien de la barre de liens supérieure correspond à la position « Accueil ». Ce lien pointe souvent vers le site Web dans lequel la barre est définie, tandis que les liens restants pointent vers des sites Web situés plus bas dans la hiérarchie des sites. Toutefois, cette norme n'est pas imposée. Toute URL valide peut être utilisée en tant que lien et les liens peuvent être organisés dans n'importe quel ordre.

Un sous-site peut hériter de la barre de liens supérieure de son site Web parent. Ainsi, la barre de liens supérieure peut fournir une expérience de navigation cohérente entre plusieurs sites Web. Pour plus d'informations, voir Procédure : partager la barre de liens supérieure entre les sites.

Dans v4.master, la barre de liens supérieure est définie par le balisage suivant :

<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">
    <SharePoint:AspMenu
      ID="TopNavigationMenuV4"
      Runat="server"
      EnableViewState="false"
      DataSourceID="topSiteMap"
      AccessKey="1"
      UseSimpleRendering="true"
      UseSeparateCss="false"
      Orientation="Horizontal"
      StaticDisplayLevels="2"
      MaximumDynamicDisplayLevels="1"
      SkipLinkText=""
      CssClass="s4-tn"/>
    <SharePoint:DelegateControl 
        runat="server" 
        ControlId="TopNavigationDataSource" 
        Id="topNavigationDelegate">
        <Template_Controls>
            <asp:SiteMapDataSource
              ShowStartingNode="False"
              SiteMapProvider="SPNavigationProvider"
              id="topSiteMap"
              runat="server"
              StartingNodeUrl="sid:1002"/>
        </Template_Controls>
    </SharePoint:DelegateControl>
</asp:ContentPlaceHolder>

À l'instar du balisage de la barre de navigation, le balisage qui définit la barre de liens supérieure est inclus dans un contrôle ContentPlaceHolder, ce qui permet aux concepteurs des pages de contenu de remplacer le contenu par défaut par leur propre contenu.

La barre de liens supérieure est restituée par un contrôle AspMenu. Le menu est restitué horizontalement, une direction que le balisage du contrôle spécifie en affectant à la propriété Orientation la valeur « Horizontal ». Le paramètre de la propriété StaticDisplayLevels est « 2 ». Normalement, ce paramètre signifie que si un nœud du menu possède un nœud enfant, il apparaît une ligne en dessous du nœud parent. Toutefois, dans la pratique, les nœuds enfants apparaissent à droite du nœud parent, au même niveau. Cet effet est dû à la classe de la feuille de style en cascade (CSS) attachée au menu par le paramètre de la propriété CssClass. Pour faciliter le contrôle des éléments de menu à l'aide de la feuille de style en cascade, le balisage du contrôle affecte à la propriété UseSimpleRendering la valeur « true ».

Si la profondeur de la structure des menus comporte plus de deux niveaux, les éléments du troisième niveau s'affichent dans un menu volant, un effet qui est contrôlé par le paramètre de la propriété MaximumDynamicDisplayLevels. Étant donné que ce paramètre a pour valeur « 1 », les menus volants affichent un seul niveau sous les deux qui apparaissent dans le menu statique. Tous les niveaux supplémentaires sont ignorés.

La source de données derrière le menu est un contrôle SiteMapDataSource. Comme vous pouvez le voir dans le balisage, la propriété SiteMapProvider lie le contrôle de la source de données à une instance de la classe SPNavigationProvider, qui dérive de la classe SiteMapProvider.

Vous pouvez également remarquer que la valeur de la propriété ShowStartingNode est False. Ceci est dû au fait que le nœud de départ réel corresponde à la racine de l'arborescence des nœuds qui forme la barre de liens supérieure ; il sert de fonction interne et n'a pas vocation à être restitué sur la page. La valeur de la propriété StartingNodeUrl, « sid:1002 », n'est pas une URL propre mais plutôt une expression qui pointe vers l'identificateur SharePoint du nœud racine de la barre de liens supérieure.

Vous pouvez récupérer le nœud racine à l'aide de la ligne de code suivante :

SPNavigationNode toplinkbar = web.Navigation.GetNodeById(1002);
Dim toplinkbar as SPNavigationNode = web.Navigation.GetNodeById(1002)

Lorsque vous examinez cet objet, vous constatez que sa propriété Title renvoie « Barre de navigation supérieure SharePoint » et sa propriété Url renvoie « / ».

ConseilConseil

Vous obtenez des résultats similaires si vous ouvrez v4.master dans SharePoint Designer 2010 et remplacez la valeur de ShowStartingNode par True. Lorsque vous enregistrez la modification et affichez la page d'accueil du site Web dans votre navigateur, vous vous apercevez que le premier nœud dans la barre de liens supérieure affiche le texte Barre de navigation supérieure SharePoint.

L'objet SPNavigationNode qui représente la racine de l'arborescence des nœuds de la barre de liens supérieure possède une propriété Children qui renvoie une collection d'objets SPNavigationNode. Les objets de cette collection représentent les nœuds visibles dans la barre de liens supérieure. La collection est énumérable, si bien que vous pouvez facilement itérer dessus comme illustré dans l'application console courte suivante :

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Navigation;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPNavigationNode toplinkbar = web.Navigation.GetNodeById(1002);
                    if (toplinkbar != null)
                    {
                        foreach (SPNavigationNode node in toplinkbar.Children)
                        {
                            Console.Write("| {0} ", node.Title);
                        }
                        Console.WriteLine("|");
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.ReadLine();
        }
    }
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Navigation

Module ConsoleApp

    Sub Main()

        Using site As New SPSite("https://localhost")

            Using web As SPWeb = site.OpenWeb()

                Dim toplinkbar As SPNavigationNode = web.Navigation.GetNodeById(1002)

                If toplinkbar IsNot Nothing Then

                    For Each node As SPNavigationNode In toplinkbar.Children
                        Console.Write("| {0} ", node.Title)
                    Next
                    Console.WriteLine("|")

                End If

            End Using

        End Using

        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Lancement rapide

Lancement rapide désigne un menu de liens qui peut apparaître sur le côté gauche des pages d'un site Web. Ce menu est prévu pour la navigation au sein d'un site et comporte généralement des liens vers des listes et des bibliothèques de documents, ainsi que vers d'autres contenus de site. Il peut également inclure des liens vers des contenus externes.

Les propriétaires de site peuvent activer ou masquer le menu Lancement rapide en accédant à l'interface utilisateur d'administration dans le menu Actions du site. Les développeurs peuvent en faire de même en écrivant du code. Pour plus d'informations, voir Comment : afficher ou masquer le menu Lancement rapide.

Dans v4.master, le balisage qui définit le menu Lancement rapide est imbriqué dans un contrôle ContentPlaceHolder (ID="PlaceHolderLeftNavBar") qui contient également le balisage du contrôle arborescence. Par conséquent, les concepteurs de pages ont la possibilité de remplacer les deux contrôles de navigation par leur propre contenu. Les pages de contenu associées à certains modèles Web intégrés substituent effectivement d'autres contenus. Le modèle Espace de travail de réunion en est un exemple.

Le balisage du menu Lancement rapide définit deux versions, chacune au sein d'un contrôle UIVersionedContent. Pour un contrôle UIVersionedContent, la valeur de l'attribut UIVersion est « 3 » ; pour l'autre, la valeur est « 4 ». La version restituée sur la page est déterminée par le fait que les administrateurs de collections de sites aient appliqué ou non l'interface utilisateur la plus récente aux sites Web de la collection. Pour plus d’informations, voir Mise à niveau visuelle.

Notes

Vous pouvez obtenir le numéro de version de l'interface utilisateur par programme en accédant à la propriété SPWeb.UIVersion.

La version 4 du menu Lancement rapide est définie par le balisage suivant :

<SharePoint:AspMenu 
    id="V4QuickLaunchMenu" 
    runat="server" 
    EnableViewState="false" 
    DataSourceId="QuickLaunchSiteMap" 
    UseSimpleRendering="true" 
    UseSeparateCss="false" 
    Orientation="Vertical" 
    StaticDisplayLevels="2" 
    MaximumDynamicDisplayLevels="0" 
    SkipLinkText="" 
    CssClass="s4-ql" />

Le menu Lancement rapide se présente comme une série de titres pouvant comporter un ou plusieurs niveaux d'éléments de menu sous-jacents. Le nombre de niveaux de menu réellement restitués sur la page dépend de la configuration du contrôle AspMenu qui restitue le menu.

Dans l'exemple précédent, la valeur de la propriété StaticDisplayLevels est « 2 », ce qui signifie que deux niveaux de menu sont affichés : un titre plus un niveau sous le titre. Les niveaux supplémentaires situés sous ces deux titres peuvent s'afficher dans un menu volant dynamique. Le nombre de menus affichés dans le menu volant est déterminé par le paramètre de la propriété MaximumDynamicDisplayLevels. Dans cet exemple, la valeur de la propriété est « 0 », ce qui signifie que les menus volants sont désactivés. Ainsi, si le menu Lancement rapide comporte plus de deux niveaux de menu, ils n'apparaissent pas.

La propriété DataSourceID dans le balisage du contrôle AspMenu pointe vers un contrôle SiteMapDataSource configuré par le balisage suivant :

<asp:SiteMapDataSource 
    SiteMapProvider="SPNavigationProvider" 
    ShowStartingNode="False" 
    id="QuickLaunchSiteMap" 
    StartingNodeUrl="sid:1025" 
    runat="server" />

Comme c'est le cas avec la source de données de la barre de liens supérieure, la source de données du menu Lancement rapide a sa propriété ShowStartingNode définie sur False. Le nœud racine comporte des informations sur le menu Lancement rapide lui-même et n'est pas destiné à être affiché. Tous les autres nœuds (liens) du menu sont des enfants de ce nœud. La valeur de la propriété StartingNodeUrl, « sid:10252 », indique l'identificateur SharePoint du nœud racine du menu Lancement rapide.

Vous pouvez récupérer le nœud racine à l'aide de la ligne de code suivante :

SPNavigationNode quicklaunch = web.Navigation.GetNodeById(1025);
Dim quicklaunch as SPNavigationNode = web.Navigation.GetNodeById(1025)

Lorsque vous examinez cet objet, vous constatez que sa propriété Title renvoie « Lancement rapide » et sa propriété Url renvoie « / ».

L'objet SPNavigationNode situé à la racine de l'arborescence des nœuds possède une propriété Children qui renvoie une collection d'objets SPNavigationNode, lesquels représentent le premier niveau des éléments de menu, les titres. Chaque titre peut également avoir des nœuds enfants, qui représentent le deuxième niveau des éléments de menu. Les nœuds du deuxième niveau peuvent également avoir des nœuds enfants, et ainsi de suite en descendant l'arborescence.

L'application console suivante montre comment développer le menu Lancement rapide, en énumérant les éléments. L'application imprime le texte affiché pour chaque titre dans le menu Lancement rapide, puis appelle une méthode récursive afin d'imprimer le texte affiché de tous les niveaux de menu situés sous chaque titre.

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Navigation;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPNavigationNode quicklaunch = web.Navigation.GetNodeById(1025);
                    if (quicklaunch != null)
                    {
                        foreach (SPNavigationNode heading in quicklaunch.Children)
                        {
                            PrintNode(heading);
                            Console.WriteLine(new String('-', 10));
                        }
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.ReadLine();
        }

        static void PrintNode(SPNavigationNode node)
        {
            Console.WriteLine(node.Title);
            foreach (SPNavigationNode item in node.Children)
                 PrintNode(item);
        }
    }
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Navigation

Module ConsoleApp

    Sub Main()

        Using site As New SPSite("https://localhost")

            Using web As SPWeb = site.OpenWeb()

                Dim quicklaunch As SPNavigationNode = web.Navigation.GetNodeById(1025)

                If quicklaunch IsNot Nothing Then

                    For Each heading As SPNavigationNode In quicklaunch.Children

                        PrintNode(heading)
                        Console.WriteLine(New String("-", 10))

                    Next

                End If

            End Using

        End Using

        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

    Sub PrintNode(ByRef node As SPNavigationNode)

        Console.WriteLine(node.Title)
        For Each item As SPNavigationNode In node.Children
            PrintNode(item)
        Next

    End Sub

End Module

Arborescence

L'élément de navigation que constitue l'arborescence a pour but de présenter une vue hiérarchique de tout le contenu du site. Par défaut, l'arborescence est désactivée. Lorsqu'elle est activée, elle apparaît dans la zone de navigation gauche de la page. Si le menu Lancement rapide est activé, elle apparaît en dessous.

Un administrateur du site Web peut activer l'arborescence en accédant à la page Tree View dans l'interface utilisateur d'administration. Pour afficher la page Arborescence, cliquez sur Actions du site, puis sur Paramètres du site. Sous Aspect, cliquez sur Arborescence.

Vous pouvez activer l'arborescence dans le code en affectant à la propriété SPWeb.TreeViewEnabled la valeur true.

À l'instar du menu Lancement rapide, l'arborescence possède deux versions. Dans v4.master, les deux versions sont restituées par un contrôle SPTreeView imbriqué dans un contrôle SPRememberScroll. Le contrôle SPTreeView obtient ses données à partir d'une instance de la classe SPHierarchyDataSourceControl.

Dans v4.master, la version 4 est définie par le balisage suivant :

<SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">
  <Template_Controls>
    <SharePoint:SPHierarchyDataSourceControl 
        runat="server" 
        id="TreeViewDataSourceV4" 
        RootContextObject="Web" 
        IncludeDiscussionFolders="true" />
    <SharePoint:SPRememberScroll 
        runat="server" 
        id="TreeViewRememberScrollV4" 
        onscroll="javascript:_spRecordScrollPositions(this);" 
        style="overflow: auto;height: 400px;width: 155px; ">
        <SharePoint:SPTreeView 
            id="WebTreeViewV4" 
            runat="server" 
            ShowLines="false" 
            DataSourceId="TreeViewDataSourceV4" 
            ExpandDepth="0" 
            SelectedNodeStyle-CssClass="ms-tvselected" 
            NodeStyle-CssClass="ms-navitem" 
            SkipLinkText="" 
            NodeIndent="12" 
            ExpandImageUrl="/_layouts/images/tvclosed.png" 
            ExpandImageUrlRtl="/_layouts/images/tvclosedrtl.png" 
            CollapseImageUrl="/_layouts/images/tvopen.png" 
            CollapseImageUrlRtl="/_layouts/images/tvopenrtl.png" 
            NoExpandImageUrl="/_layouts/images/tvblank.gif">
        </SharePoint:SPTreeView>
    </SharePoint:SPRememberScroll>
  </Template_Controls>
</SharePoint:DelegateControl>

Notez que la source de données du contrôle arborescence est un objet SPHierarchyDataSourceControl, et que la propriété RootContextObject de l'objet a la valeur « Web ». Cette valeur définit le contexte dans lequel l'arborescence est enracinée. Par conséquent, l'arborescence restitue les liens vers tous les sous-sites du site actuel, suivis des bibliothèques de documents et des listes.

Voir aussi

Tâches

Procédure : ajouter un sous-site à la barre de liens supérieure ou au menu Lancement rapide

Procédure : personnaliser l'affichage du menu de lancement rapide

Concepts

Procédure : partager la barre de liens supérieure entre les sites

Procédure : personnaliser l’affichage d’une barre de liens supérieure

Utilisation d’une source de données personnalisée pour la navigation