Hinzufügen von Hyperlinks zur Leiste für häufig verwendete Hyperlinks

Letzte Änderung: Montag, 1. November 2010

Gilt für: SharePoint Foundation 2010

Im Falle einer Microsoft SharePoint Foundation-Website handelt es sich bei der Leiste für häufig verwendete Hyperlinks um die Menüleiste mit Registerkarten, die direkt unter dem Titel und der Beschreibung der Website angezeigt wird. Das SharePoint Foundation-Objektmodell stellt die Navigationsstruktur der Leiste für häufig verwendete Hyperlinks als Sammlung von SPNavigationNode-Objekten dar. Hyperlinks fügen Sie hinzu, indem Sie der Sammlung der Leiste für häufig verwendete Hyperlinks SPNavigationNode-Objekte hinzufügen.

Die Leiste für häufig verwendete Hyperlinks einer Website wird durch eine Instanz der SPNavigationNodeCollection-Klasse repräsentiert. Zum Abrufen dieser Sammlung greifen Sie auf die SPWeb.Navigation-Eigenschaft der Website zu, von der ein SPNavigation-Objekt zurückgegeben wird, und anschließend greifen Sie auf die TopNavigationBar-Eigenschaft dieses Objekts zu.

SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;
Dim topnav As SPNavigationNodeCollection = web.Navigation.TopNavigationBar
VorsichtVorsicht

Wenn für eine Website die Verwendung der Leiste für häufig verwendete Hyperlinks der übergeordneten Website konfiguriert ist, wird von der SPWeb.Navigation.TopNavigationBar-Eigenschaft null zurückgegeben.

Wenn Sie über eine Sammlung verfügen, können Sie ein SPNavigationNode-Objekt zur Repräsentation des neuen Hyperlinks erstellen und anschließend eine Methode der SPNavigationNodeCollection-Klasse aufrufen, um den Knoten der Leiste für häufig verwendete Hyperlinks hinzuzufügen.

  1. Überprüfen Sie den Wert der SPWeb.Navigation.UseShared-Eigenschaft, um sicherzustellen, dass die Website über eine eigene Leiste für häufig verwendete Hyperlinks verfügt und keine Hyperlinks von einer übergeordneten Website erbt.

    Wenn die UseShared-Eigenschaft false zurückgibt, verfügt die Website über eine eigene Leiste für häufig verwendete Hyperlinks, der Sie Hyperlinks hinzufügen können. Wenn diese Eigenschaft true zurückgibt, verwendet die Website die Leiste für häufig verwendete Hyperlinks der übergeordneten Website. In diesem Fall können Sie den Hyperlink der Leiste für häufig verwendete Hyperlinks der übergeordneten Website hinzufügen oder aber stattdessen den Hyperlink im Schnellstartmenü der übergeordneten Website einfügen.

  2. Suchen Sie nach einem doppelten Hyperlink.

    Eine mögliche Methode ist das Aufrufen der SPWeb.Navigation.GetNodeByUrl-Methode, der Sie die URL des vorgeschlagenen Hyperlinks als Argument übergeben. Falls kein Hyperlink mit dieser URL gefunden wird, gibt die GetNodeByUrl-Methode null zurück.

    Falls ein Hyperlink gefunden wird, gibt die Methode ein SPNavigationNode-Objekt zurück. Der bestehende Hyperlink könnte jedoch nicht in der Leiste für häufig verwendete Hyperlinks, sondern im Schnellstartmenü vorhanden sein. Überprüfen Sie die ParentId-Eigenschaft des zurückgegebenen Knotens, um festzustellen, ob ein bestehender Hyperlink der Leiste für häufig verwendete Hyperlinks angehört. Die ID der Leiste für häufig verwendete Hyperlinks ist stets 1002.

  3. Wenn der Hyperlink noch nicht in der Leiste für häufig verwendete Hyperlinks vorhanden ist, verwenden Sie einen der Konstruktoren für die SPNavigationNode-Klasse, um dafür einen Navigationsknoten zu erstellen.

    Die Klasse weist zwei Konstruktoren auf:

    • Für den ersten Konstruktor sind zwei Argumente möglich: eine Zeichenfolge, die den anzuzeigenden Text für den Hyperlink enthält, sowie eine weitere Zeichenfolge, die die URL enthält, die vom Hyperlink aufgelöst werden soll. Verwenden Sie diesen Konstruktor nur für interne Hyperlinks, also Hyperlinks zu Inhalt in derselben Websitesammlung. Die URL sollte serverrelativ sein.

    • Für den zweiten Konstruktor sind drei Argumente möglich. Die ersten beiden Argumente sind identisch wie beim anderen Konstruktor. Das dritte Argument ist ein boolean-Wert, der angibt, ob es sich um einen externen oder internen Hyperlink handelt. Übergeben Sie true für einen Hyperlink zu einer externen Website, und übergeben Sie eine absolute URL im zweiten Argument. Bei einem internen Hyperlink übergeben Sie false und eine serverrelative URL.

  4. Rufen Sie einen Verweis auf das SPNavigationNodeCollection-Objekt ab, das die Leiste für häufig verwendete Hyperlinks darstellt, indem Sie den Wert der SPWeb.Navigation.TopNavigationBar-Eigenschaft abrufen.

  5. Rufe Sie eine Methode der SPNavigationNodeCollection-Klasse auf, um der Sammlung den Knoten hinzuzufügen.

    Rufen Sie die AddAsFirst-Methode auf, um den Knoten als ersten Knoten auf der Leiste hinzuzufügen. Rufen Sie die AddAsLast-Methode auf, um ihn als letzten Knoten hinzuzufügen. Rufen Sie die Add-Methode auf, um den Knoten nach einem anderen Knoten einzufügen.

HinweisHinweis

Ein SPNavigationNode-Objekt wird erst vollständig initialisiert, wenn es einer Sammlung hinzugefügt wurde. Wenn das Objekt noch nicht Mitglied einer Sammlung ist, wird von schreibgeschützten Eigenschaften wie Id und ParentId die Zeichenfolge null zurückgegeben.

Beispiel

Die Konsolenanwendung im folgenden Beispiel durchläuft die Websites in einer Websitesammlung und fügt auf der Leiste für häufig verwendete Hyperlinks einen Hyperlink zu jeder Website für die Stammwebsite der Sammlung hinzu. Vor dem Hinzufügen eines Hyperlinks wird geprüft, ob der Hyperlink bereits vorhanden ist.

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

Siehe auch

Aufgaben

Vorgehensweise: Hinzufügen einer Unterwebsite zur Leiste für häufig verwendete Hyperlinks oder zum Menü "Schnellstart"

Konzepte

Gewusst wie: Freigeben der Leiste für häufig verwendete Hyperlinks zwischen Websites

Gewusst wie: Anpassen der Anzeige der Leiste für häufig verwendete Hyperlinks