Практическое руководство. Настройка отображения верхней панели ссылок
Дата последнего изменения: 1 ноября 2010 г.
Применимо к: SharePoint Foundation 2010
Верхняя панель ссылок, отображаемая на большинстве страниц контента в Microsoft SharePoint Foundation 2010, представляет собой горизонтальную полосу со вкладками, расположенную непосредственно под заголовком и описанием сайта. Первая вкладка является "Домашней" и обычно содержит ссылку на домашнюю страницу сайта. Другие ссылки на панели обычно ведут на сайты, расположенные на более низких уровнях иерархии.
Верхняя панель ссылок выводится с помощью элемента управления AspMenu, определенного на главной странице, которая формирует макет страниц сайта. В SharePoint Foundation 2010 основной главной страницей, используемой как для страниц контента, так и для страниц приложений, является страница v4.master. Чтобы изменить внешний вид верхней панели ссылок, измените разметку на странице v4.master.
Настройка верхней панели ссылок
Чтобы изменить внешний вид верхней панели ссылок, необходимо задать свойства элемента управления AspMenu, который отображает узлы навигации этой панели. Подробные сведения о разметке этого элемента управления и его источнике данных см. в статье Элементы навигации.
Например, можно задать свойства, добавляющие всплывающие меню, которые будут отображаться под ссылками на панели вложенных элементов. Это может оказаться полезным для разгрузки верхней панели ссылок, так ссылки в статическом меню будут использоваться в качестве категорий, а вложенные ссылки будут перенесены во всплывающие меню под категориями.
Добавление на верхнюю панель ссылок всплывающих меню
Откройте в SharePoint Designer 2010 сайт, который необходимо настроить.
В области навигации выберите пункт Главные страницы.
Щелкните страницу v4.master правой кнопкой мыши и выберите команду Копировать.
Щелкните правой кнопкой мыши пустую область на панели Главные страницы и выберите команду Вставить.
Будет создан файл v4_copy(1).master.
Щелкните файл v4_copy(1).master правой кнопкой мыши, выберите команду Переименовать и введите новое имя, например my.master.
Откройте новый файл для редактирования.
Найдите в файле элемент управления меню верхней панели ссылок. Это можно сделать в режиме просмотра кода, выполнив поиск по следующей строке:
ID="TopNavigationMenuV4"
Присвойте атрибутам StaticDisplayLevels и MaximumDynamicDisplayLevels значение 1, как показано ниже.
<SharePoint:AspMenu ID="TopNavigationMenuV4" Runat="server" EnableViewState="false" DataSourceID="topSiteMap" AccessKey="<%$Resources:wss,navigation_accesskey%>" UseSimpleRendering="true" UseSeparateCss="false" Orientation="Horizontal" StaticDisplayLevels="1"MaximumDynamicDisplayLevels="1" SkipLinkText="" CssClass="s4-tn"/>
В меню Файл выберите пункт Сохранить.
Примечание Если в браузере открыта страница сайта, сохранить изменения в главную страницу сайта по умолчанию не удастся. В этом случае закройте браузер и повторите попытку.
В области навигации выберите пункт Главные страницы.
Щелкните имя главной страницы правой кнопкой мыши и выберите команду Назначить главной страницей по умолчанию.
Примечание Чтобы задать собственную главную страницу в качестве главной странице по умолчанию, также можно написать код, в котором присваивается значение свойству SPWeb.MasterUrl.
Всплывающие меню не отображаются, если узлы верхней панели ссылок не содержат дочерних узлов. В приведенном ниже консольном приложении создается новый узел с текстом "Ресурсы", в который добавляется дочерний узел с текстом "Центр разработчиков для SharePoint".
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 web = site.OpenWeb("parent"))
{
if (!web.Navigation.UseShared)
{
string resTitle = "Resources";
string resUrl = web.Navigation.Home.Url;
string spdevTitle = "SharePoint Developer Center";
string spdevUrl = "https://msdn.microsoft.com/ru-ru/sharepoint";
// Get the top link bar.
SPNavigationNodeCollection topnav = web.Navigation.TopNavigationBar;
// If a Resources link exists, get it.
SPNavigationNode resLink = topnav
.Cast<SPNavigationNode>()
.FirstOrDefault(n => n.Title == resTitle);
// If the Resources link does not exist, create it.
if (resLink == null)
{
resLink = new SPNavigationNode(resTitle, resUrl);
resLink = topnav.AddAsLast(resLink);
}
// If the Resources node has a SharePoint Dev Center child, get it.
SPNavigationNode spdevLink = resLink
.Children
.Cast<SPNavigationNode>()
.FirstOrDefault(n => n.Url == spdevUrl);
// If the item does not exist, create it.
if (spdevLink == null)
{
spdevLink = new SPNavigationNode(spdevTitle, spdevUrl, true);
spdevLink = resLink.Children.AddAsLast(spdevLink);
}
}
}
}
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 Not web.Navigation.UseShared Then
Dim resTitle As String = "Resources"
Dim resUrl As String = web.Navigation.Home.Url
Dim spdevTitle As String = "SharePoint Developer Center"
Dim spdevUrl As String = "https://msdn.microsoft.com/ru-ru/sharepoint"
' Get the top link bar.
Dim topnav As SPNavigationNodeCollection = web.Navigation.TopNavigationBar
' If a Resources link exists, get it.
Dim resLink As SPNavigationNode = topnav.Cast(Of SPNavigationNode)().FirstOrDefault( _
Function(n) n.Title = resTitle)
' If the Resources link does not exist, create it.
If resLink Is Nothing Then
resLink = New SPNavigationNode(resTitle, resUrl)
resLink = topnav.AddAsLast(resLink)
End If
' If the Resources node has a SharePoint Dev Center child, get it.
Dim spdevLink As SPNavigationNode = resLink.Children.Cast(Of SPNavigationNode)().FirstOrDefault( _
Function(n) n.Url = spdevUrl)
' If the item does not exist, create it.
If spdevLink Is Nothing Then
spdevLink = New SPNavigationNode(spdevTitle, spdevUrl, True)
spdevLink = resLink.Children.AddAsLast(spdevLink)
End If
End If
End Using
End Using
Console.Write(vbCrLf & "Press ENTER to continue....")
Console.Read()
End Sub
End Module
Наследование для верхней панели ссылок
Верхняя панель ссылок для дочернего сайта может наследовать навигационные ссылки верхней панели ссылок родительского сайта, а не определять собственный набор ссылок. Верхняя панель ссылок, настроенная таким образом, позволяет обеспечить единообразие для пользователей, перемещающихся между родительским и дочерними сайтами. Дополнительные сведения см. в статье Совместное использование верхней панели ссылок разными сайтами.
Однако следует иметь в виду, что настройка верхней панели ссылок дочернего сайта с использованием параметра Наследовать ссылки родительского сайта означает, что на дочернем сайте будет использоваться только карта сайта, лежащая в основе верхней панели ссылок родительского сайта. Содержимое верхней панели ссылок не наследуется. Ее внешний вид по-прежнему определяется разметкой главной страницы и страниц контента дочернего сайта. Хотя это может показаться очевидным, об этом часто забывают.
Один из способов обеспечить единообразное представление для всех дочерних сайтов — задать свойство MasterUrl для дочерних сайтов таким образом, чтобы оно указывало на главную страницу родительского сайта. Однако при таком подходе отменяются локальные настройки, что может оказаться неприемлемым. Более эффективный подход заключается в дублировании изменений в разметке для верхней панели ссылок путем внесения идентичных изменений в главную страницу по умолчанию для каждого сайта.
См. также
Задачи
Концепции
Совместное использование верхней панели ссылок разными сайтами