Partager via


Ajout de liens à la barre de liens supérieure

Dernière modification : lundi 1 novembre 2010

S’applique à : SharePoint Foundation 2010

Sur un site Web Microsoft SharePoint Foundation, la barre de liens supérieure correspond à la bande avec onglets située sous le titre et la description du site Web. Le modèle objet SharePoint Foundation représente la structure de navigation de la barre de liens supérieure en tant que collection d’objets SPNavigationNode. Vous ajoutez des liens en ajoutant des objets SPNavigationNode à la collection de la barre de liens supérieure.

Comment ajouter des liens

La barre de liens supérieure d’un site Web est représentée par une instance de la classe SPNavigationNodeCollection. Vous obtenez la collection en accédant à la propriété SPWeb.Navigation du site Web, qui renvoie un objet SPNavigation, puis en accédant à la propriété TopNavigationBar de cet objet.

SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;
Dim topnav As SPNavigationNodeCollection = web.Navigation.TopNavigationBar
Note AttentionAttention

Si un site Web est configuré pour utiliser la barre de liens supérieure de son site parent, sa propriété SPWeb.Navigation.TopNavigationBar retourne null.

Une fois que vous avez une collection, vous pouvez construire un objet SPNavigationNode pour représenter le nouveau lien, puis appeler une méthode de la classe SPNavigationNodeCollection pour ajouter le nœud à la barre de liens supérieure.

Pour ajouter un lien à la barre de liens supérieure

  1. Vérifiez la valeur de la propriété SPWeb.Navigation.UseShared pour vous assurer que le site Web possède sa propre barre de liens supérieure et qu’il n’hérite pas les liens d’un site parent.

    Si UseShared retourne false, le site Web possède sa propre barre de liens supérieure et vous pouvez l’ajouter. Si la propriété retourne true, le site Web utilise la barre de liens supérieure de son site parent. Dans ce cas, vous pouvez ajouter le lien à la barre de liens supérieure du site parent ou choisir de placer le lien sur le menu Lancement rapide du site enfant.

  2. Vérifiez l’existence d’un lien en double.

    L’un des moyens de vérifier consiste à appeler la méthode SPWeb.Navigation.GetNodeByUrl, en passant l’URL du lien proposé comme argument. S’il n’existe pas de lien avec cette URL, la méthode GetNodeByUrl retourne null.

    S’il existe un lien, la méthode retourne un objet SPNavigationNode. Cependant, le lien existant peut être sur le menu Lancement rapide, plutôt que sur la barre de liens supérieure. Pour vérifier qu’un lien existant appartient à la barre de liens supérieure, vérifiez la propriété ParentId du nœud retourné. L’ID de la barre de liens supérieure est toujours 1002.

  3. Si la barre de liens supérieure ne possède toujours pas le lien, utilisez l’un des constructeurs de la classe SPNavigationNode pour lui créer un nœud de navigation.

    La classe possède deux constructeurs :

    • Le premier constructeur accepte deux arguments : une chaîne qui contient le texte affiché pour le lien, et une chaîne qui contient l’URL que le lien doit résoudre. Utilisez ce constructeur uniquement pour les liens internes – liens au contenu de la même collection de sites. L’URL doit être relative au serveur.

    • Le second constructeur accepte trois arguments. Les deux premiers arguments sont identiques à ceux de l’autre constructeur. Le troisième argument est une valeur boolean qui indique si le lien est externe ou interne. Passez true pour le lien vers un site Web externe, et passez une URL absolue dans le second argument. Si le lien est interne, passez false et une URL relative au serveur.

  4. Obtenez une référence à l’objet SPNavigationNodeCollection qui représente la barre de liens supérieure en récupérant la valeur de la propriété SPWeb.Navigation.TopNavigationBar.

  5. Appelez une méthode de la classe SPNavigationNodeCollection pour ajouter le nœud à la collection.

    Pour que le nœud apparaisse en premier sur la barre, appelez la méthode AddAsFirst . Pour que le nœud apparaisse en dernier, appelez la méthode AddAsLast. Pour l’insérer après le nœud, appelez la méthode Add.

Notes

Un objet SPNavigationNode n’est pas complètement initialisé tant qu’il n’est pas ajouté à une collection. Si l’objet n’est pas encore membre d’une collection, les propriétés en lecture seule telles que les propriétés Id et ParentId retournent null.

Exemple

L’application console de l’exemple suivant parcourt la collection de sites Web d’une collection de sites, ajoutant un lien à chaque site Web de la barre de liens supérieure du site Web racine de la collection. Avant d’ajouter un lien, l’application vérifie la présence d’un lien existant.

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())
            {
                if (web.Navigation.UseShared) 
                    return; 

                // Get the top link bar.
                SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;

                // Iterate over the collection of subsites.
                foreach (SPWeb subweb in web.Webs)
                {
                    // Check for an existing link.
                    SPNavigationNode node = web.Navigation.GetNodeByUrl(subweb.ServerRelativeUrl);
                    if (node == null || node.ParentId != 1002)
                    {
                        // No link, so add one.

                        // Truncate a long title.
                        string linkTitle = subweb.Title;
                        if (linkTitle.Length > 15)
                            linkTitle = linkTitle.Substring(0, 12) + "...";

                        // Create the link.
                        node = new SPNavigationNode(linkTitle, subweb.ServerRelativeUrl);

                        // Add it to the top link bar.
                        node = topnav.AddAsLast(node);
                    }
                    subweb.Dispose();
                }
            }
            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()

                If web.Navigation.UseShared Then
                    Return
                End If

                ' Get the top link bar.
                Dim topnav As SPNavigationNodeCollection = web.Navigation.TopNavigationBar

                ' Iterate over the collection of subsites.
                For Each subweb As SPWeb In web.Webs
                    ' Check for an existing link.
                    Dim node As SPNavigationNode = web.Navigation.GetNodeByUrl(subweb.ServerRelativeUrl)
                    If node Is Nothing OrElse node.ParentId <> 1002 Then

                        ' No link, so add one.

                        ' Truncate a long title.
                        Dim linkTitle As String = subweb.Title
                        If linkTitle.Length > 15 Then
                            linkTitle = linkTitle.Substring(0, 12) + "..."
                        End If

                        ' Create the link.
                        node = New SPNavigationNode(linkTitle, subweb.ServerRelativeUrl)

                        ' Add it to the top link bar.
                        node = topnav.AddAsLast(node)
                    End If
                    subweb.Dispose()
                Next

            End Using
        End Using

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

End Module

Voir aussi

Tâches

Procédure : ajouter un sous-site à la barre de liens supérieure ou au menu 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