Share via


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

Última modificación: martes, 05 de octubre de 2010

Hace referencia a: SharePoint Foundation 2010

En Microsoft SharePoint Foundation, puede proporcionar a los usuarios una experiencia de navegación coherente entre sitios mediante la especificación de herencia desde el sitio primario, lo cual resulta especialmente importante cuando se necesita proporcionar la navegación entre subsitios del mismo nivel. En este caso, cada subsitio creado en el sitio comparte una barra de vínculos superior y está representado entre los vínculos. Sin la herencia de navegación, cada sitio tendría su propia navegación. La navegación compartida debe implementarse a través de la barra de vínculos superior del sitio primario.

Al compartir una barra de vínculos superior entre sitios se simplifica la experiencia del usuario, porque se permite una navegación más fácil entre sitios. La navegación compartida simplifica la navegación, pero no debe ser un sustituto de una planeación minucioso. Hay que comprender que el control de navegación compartida representa una estructura "plana" de sitios y, posiblemente, podría confundir a los usuarios sobre la jerarquía real de los sitios creados en una colección de sitios.

Uso de la interfaz de usuario para compartir la barra de vínculos superior

Puede implementar un control de navegación compartida entre sitios dentro de una colección de sitios a través de la interfaz de usuario. Puede especificar que se comparta la barra de vínculos superior a medida que crea cada sitio o después de crear cada sitio.

Para agregar la barra de vínculos superior del sitio primario a un subsitio al crear el subsitio

  1. En la página Crear, haga clic en Más opciones.

  2. En la sección Herencia de navegación, después de ¿Utilizar la barra de vínculos superior del sitio primario?, haga clic en .

  3. Haga clic en Crear.

Para agregar la barra de vínculos superior del sitio primario a un subsitio existente

  1. Navegue hasta el subsitio.

  2. Haga clic en Acciones del sitio y, a continuación, en Configuración del sitio.

  3. En la página Configuración del sitio, en la sección Aspecto, haga clic en Barra de vínculos superior.

  4. En la página Barra de vínculos superior, haga clic en Utilizar vínculos del sitio primario y, a continuación, haga clic en Aceptar en el cuadro de mensaje que se abre.

Uso del modelo de objeto para compartir la barra de vínculos superior

Las operaciones de navegación de un sitio web se controlan mediante la configuración almacenada en el objeto SPNavigation devuelto por la propiedad Navigation del objeto SPWeb que representa el sitio.

La configuración de la propiedad UseShared del objeto SPNavigation determina si un sitio web usará la barra de vínculos superior del sitio primario o no. Si UseShared devuelve true, el subsitio hereda la barra de vínculos superior del sitio primario; de lo contrario, el subsitio tendrá su propia barra de vínculos superior exclusiva.

Nota

El sitio web raíz de una colección de sitios no puede heredar una barra de vínculos superior porque no tiene ningún sitio web primario del cual heredar. Por este motivo, SPWeb.Navigation.UseShared devuelve false cuando SPWeb.IsRootWeb devuelve true. Se produce una excepción si se intenta establecer la propiedad UseShared del sitio web raíz en true.

Al crear un sitio web en código, no es posible crear el sitio y agregar la barra de vínculos superior del sitio primario al sitio en una sola llamada. Debe crear primero el sitio web y, a continuación, agregar la barra de vínculos superior del sitio primario. Para obtener un ejemplo, vea el método SPWebCollection.Add.

Para agregar la barra de vínculos superior del sitio primario a un subsitio

  1. Obtenga una referencia al objeto SPWeb que representa el subsitio.

    SPWeb child = site.OpenWeb("parent/child");
    
    Dim child As SPWeb = site.OpenWeb("parent/child")
    
  2. Compruebe que SPWeb.IsRootWeb devuelva false.

    if (!child.IsRootWeb)
    
    If Not child.IsRootWeb Then
    
  3. Obtenga la propiedad Navigation del subsitio y, en el objeto devuelto, establezca la propiedad UseShared en true.

    child.Navigation.UseShared = true;
    
    child.Navigation.UseShared = True
    

Ejemplo

El siguiente ejemplo es una aplicación de consola que agrega la barra de vínculos superior de un sitio web primario a un subsitio. La aplicación también modifica la barra de vínculos superior del sitio web primario mediante la adición de un vínculo al subsitio. La propiedad TopNavigationBar de un objeto SPNavigation devuelve un objeto SPNavigationNodeCollection. Para agregar un nodo a la barra de vínculos superior simplemente se debe crear un objeto SPNavigationNode y agregarlo a la SPNavigationNodeCollection que representa la barra de vínculos superior.

Tenga en cuenta que antes de agregar un vínculo, la aplicación primero se asegura de que el elemento primario no herede los vínculos. Si el elemento primario hereda los vínculos, SPNavigationNodeCollection será null y, por lo tanto, no se podrá agregar el vínculo. Si la colección no es null, la aplicación comprueba si ya existe un vínculo al elemento secundario en la barra de vínculos superior del elemento primario. Si el elemento primario no tiene ningún vínculo existente al elemento secundario, se agrega uno.

using System;
using System.Linq;
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 child = site.OpenWeb("parent/child"))
                {
                    // Verify that this is not the root of a site collection.
                    if (!child.IsRootWeb)
                    {
                        // Use links from parent on the child's top link bar.
                        child.Navigation.UseShared = true;

                        // If the parent web's top link bar is not inherited,
                        // add a link to the child on the parent's top link bar.
                        if (!child.ParentWeb.Navigation.UseShared)
                        {
                            // Get the parent's top link bar.
                            SPNavigationNodeCollection topnav = child.ParentWeb.Navigation.TopNavigationBar;

                            // Query for an existing link to the child.
                            SPNavigationNode node = topnav
                                .Cast<SPNavigationNode>()
                                .FirstOrDefault(n => n.Url.Equals(child.ServerRelativeUrl));

                            // No link, so add one.
                            if (node == null)
                            {
                                // Truncate long a title.
                                string linkTitle = child.Title;
                                if (linkTitle.Length > 15)
                                    linkTitle = linkTitle.Substring(0, 12) + "...";

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

                                // Add it.
                                node = topnav.AddAsLast(node);
                            }
                        }
                    }
                }
            }
            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 child As SPWeb = site.OpenWeb("parent/child")

                ' Verify that this is not the root of a site collection.
                If Not child.IsRootWeb Then

                    ' Use links from parent on the child's top link bar.
                    child.Navigation.UseShared = True

                    ' If the parent web's top link bar is not inherited,
                    ' add a link to the child on the parent's top link bar.
                    If Not child.ParentWeb.Navigation.UseShared Then

                        ' Get the parent's top link bar.
                        Dim topnav As SPNavigationNodeCollection = child.ParentWeb.Navigation.TopNavigationBar

                        ' Query for an existing link to the child.
                        Dim node As SPNavigationNode = topnav.Cast(Of SPNavigationNode)().FirstOrDefault(Function(n) n.Url.Equals(child.ServerRelativeUrl))

                        ' No link, so add one.
                        If node Is Nothing Then
                            ' Truncate long a title.
                            Dim linkTitle As String = child.Title
                            If linkTitle.Length > 15 Then
                                linkTitle = linkTitle.Substring(0, 12) + "..."
                            End If

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

                            ' Add it.
                            node = topnav.AddAsLast(node)
                        End If

                    End If

                End If

            End Using

        End Using

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

End Module

Vea también

Tareas

Procedimiento para personalizar la visualización de Inicio rápido

Conceptos

Controles de navegación