Compartir a través de


Adición de vínculos a la barra de vínculos superior

Última modificación: lunes, 01 de noviembre de 2010

Hace referencia a: SharePoint Foundation 2010

En un sitio web de Microsoft SharePoint Foundation, la barra de vínculos superior es la franja de fichas que aparece justo debajo del título y la descripción del sitio web. El modelo de objetos de SharePoint Foundation representa la estructura de navegación de la barra de vínculos superior de los objetos SPNavigationNode. Puede agregar vínculos mediante la adición de objetos SPNavigationNode a la colección de la barra de vínculos superior.

Procedimiento para agregar vínculos

Una barra de vínculos superior de un sitio web está representada por una instancia de la clase SPNavigationNodeCollection. Puede obtener la colección mediante el acceso a la propiedad SPWeb.Navigation del sitio web, que devuelve un objeto SPNavigation y, a continuación, mediante el acceso a la propiedad TopNavigationBar de ese objeto.

SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;
Dim topnav As SPNavigationNodeCollection = web.Navigation.TopNavigationBar
Nota de precauciónPrecaución

Si un sitio web está configurado para usar la barra de vínculos superior del sitio primario, la propiedad SPWeb.Navigation.TopNavigationBar devuelve null.

Después de obtener una colección, puede crear un objeto SPNavigationNode para representar el nuevo vínculo y, a continuación, llamar a un método de la clase SPNavigationNodeCollection para agregar el nodo a la barra de vínculos superior.

Para agregar un vínculo a la barra de vínculos superior

  1. Compruebe el valor de la propiedad SPWeb.Navigation.UseShared para asegurarse de que el sitio web tenga su propia barra de vínculos superior y no herede los vínculos de un sitio primario.

    Si UseShared devuelve false, el sitio web tiene su propia barra de vínculos superior y puede agregar a ella. Si la propiedad devuelve true, el sitio web usa la barra de vínculos superior del sitio primario. En este caso, puede agregar el vínculo a la barra de vínculos superior del sitio primario, o en su lugar puede optar por colocar el vínculo en el menú Inicio rápido del sitio secundario.

  2. Compruebe si hay un vínculo duplicado.

    Una forma de comprobar es llamar al método SPWeb.Navigation.GetNodeByUrl, pasando la dirección URL del vínculo propuesto como un argumento. Si no se encuentra un vínculo con esa dirección URL, el método GetNodeByUrl devuelve null.

    Si se encuentra un vínculo, el método devuelve un objeto SPNavigationNode. Sin embargo, el vínculo existente puede encontrarse en el menú Inicio rápido, en lugar de estarlo en la barra de vínculos superior. Para comprobar si un vínculo existente pertenece a la barra de vínculos superior, compruebe la propiedad ParentId del nodo devuelto. El identificador de la barra de vínculos superior siempre es 1002.

  3. Si la barra de vínculos superior no tiene aún el vínculo, use uno de los constructores de la clase SPNavigationNode para crear un nodo de navegación.

    La clase tiene dos constructores:

    • El primer constructor acepta dos argumentos: una cadena que contiene el texto de presentación del vínculo y otra cadena que contiene la dirección URL que debe resolver el vínculo. Use este constructor solo para los vínculos internos (vínculos a contenido en la misma colección de sitios). La dirección URL debe ser relativa al servidor.

    • El segundo constructor acepta tres argumentos. Los dos primeros argumentos son los mismos que para otro constructor. El tercer argumento es un valor boolean que indica si el vínculo es interno o externo. Pase true para un vínculo a un sitio web externo y pase una dirección URL absoluta en el segundo argumento. Si el vínculo es interno, pase false y una dirección URL relativa al servidor.

  4. Obtenga una referencia al objeto SPNavigationNodeCollection que representa la barra de vínculos superior mediante la obtención del valor de la propiedad SPWeb.Navigation.TopNavigationBar.

  5. Llame a un método de la clase SPNavigationNodeCollection para agregar el nodo a la colección.

    Para que el nodo sea el primer nodo de la barra, llame al método AddAsFirst. Para que sea el último nodo, llame al método AddAsLast. Para insertarlo después de otro nodo, llame al método Add.

Nota

Un objeto SPNavigationNode no se inicializa por completo hasta que se agrega a una colección. Si el objeto aún no pertenece a una colección, las propiedades de solo lectura, como Id y ParentId, devuelven null.

Ejemplo

La aplicación de consola en el siguiente ejemplo recorre en iteración la colección de sitios web en una colección de sitios mediante la adición de un vínculo a cada sitio web en la barra de vínculos superior para el sitio web raíz de la colección. Antes de agregar un vínculo, la aplicación busca un vínculo existente.

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

Vea también

Tareas

Cómo agregar un subsitio a la barra de vínculos superior o al menú Inicio rápido

Conceptos

Procedimiento para compartir la barra de vínculos superior entre sitios

Procedimiento para personalizar la presentación de la barra de vínculos superior