Начну с того что настройка навигации осуществляется на странице «Параметры структуры переходов узла».
Доступ к этой странице можно получить через параметры сайта перейдя к пункту «Переходы», либо (при включённой публикации) через пункт главного меню «Изменить структуру переходов».
По отношению к сайтам навигация бывает
Текущая навигация — это, соответственно, навигация, присущая текущему сайту.
var globalNodes = web.Navigation.GlobalNodes;
//Ветвь домашней страницы
var homeNode = web.Navigation.Home;
//Быстрый запуск
var quickLaunch = web.Navigation.QuickLaunch;
//Верхняя панель навигации
var topNavigationBar = web.Navigation.TopNavigationBar;
Каждый из этих элементов (кроме Home) представляет собой коллекцию ветвей навигации (SPNavigationNode).
{
//Название
var nodeTitle = node.Title;
//URL-адрес
var nodeUrl = node.Url;
//Видимость
var nodeVisibility = node.IsVisible;
//Локальность
var nodeTargetLocation = node.IsExternal;
//Аудитория
var nodeAudience = node.Properties["Audience"] == null ? string.Empty : node.Properties["Audience"].ToString();
//Тип
var nodeType = node.Properties["NodeType"] == null ? string.Empty : node.Properties["NodeType"].ToString();
//Описание
var nodeDescription = node.Properties["Description"] == null ? string.Empty : node.Properties["Description"].ToString();
//Вариант открытия ссылки
var nodeTarget = node.Properties["Target"] == null ? string.Empty : node.Properties["Target"].ToString();
//Вложенные ветви
var subNodes = node.Children;
}
Рассмотрим каждый пункт отдельно.
Вариант открытия ссылки — возвращает либо пустую строку или «_self», и тогда ссылка будет открываться в том же окне, либо возвращает значение «_blank» и ссылка будет открываться в новом окне.
//Показать дочерние узлы
var showSubSites = publishingWeb.IncludeSubSitesInNavigation;
//Отображать страницы
var showPages = publishingWeb.IncludePagesInNavigation;
//Тип сортировки
var ordering = publishingWeb.NavigationOrderingMethod;
//Поле сортировки
var sotringField = publishingWeb.NavigationAutomaticSortingMethod;
//Направление сортировки
var sortDirection = publishingWeb.NavigationSortAscending;
(для SharePoint 2010 эти свойства располагаются в объекте publishingWeb.Navigation)
А ещё проверить видимость элемента. Так например проверяется видимость страниц:
- Глобальная
- Текущая
- Верхнюю панель навигации
- Панель быстрого запуска
Текущая навигация — это, соответственно, навигация, присущая текущему сайту.
Верхняя панель навигации — панель, находящаяся под заголовком и логотипом, обычно отображающая названия сайтов в коллекции:
Панель быстрого запуска — левая панель, содержащая ссылки на библиотеки документов, ссылки и т.п.: Программный доступ к навигации осуществляется через объект Navigation, находящийся в SPWeb.
//Глобальная навигация var globalNodes = web.Navigation.GlobalNodes;
//Ветвь домашней страницы
var homeNode = web.Navigation.Home;
//Быстрый запуск
var quickLaunch = web.Navigation.QuickLaunch;
//Верхняя панель навигации
var topNavigationBar = web.Navigation.TopNavigationBar;
Каждый из этих элементов (кроме Home) представляет собой коллекцию ветвей навигации (SPNavigationNode).
Рассмотрим основные их свойства:
foreach (SPNavigationNode node in topNavigationBar) {
//Название
var nodeTitle = node.Title;
//URL-адрес
var nodeUrl = node.Url;
//Видимость
var nodeVisibility = node.IsVisible;
//Локальность
var nodeTargetLocation = node.IsExternal;
//Аудитория
var nodeAudience = node.Properties["Audience"] == null ? string.Empty : node.Properties["Audience"].ToString();
//Тип
var nodeType = node.Properties["NodeType"] == null ? string.Empty : node.Properties["NodeType"].ToString();
//Описание
var nodeDescription = node.Properties["Description"] == null ? string.Empty : node.Properties["Description"].ToString();
//Вариант открытия ссылки
var nodeTarget = node.Properties["Target"] == null ? string.Empty : node.Properties["Target"].ToString();
//Вложенные ветви
var subNodes = node.Children;
}
Рассмотрим каждый пункт отдельно.
Название, URL-адрес, Вариант открытия ссылки, Описание и Аудиторию мы можем увидеть в окне создания/изменения ссылки на сайте.
Вариант открытия ссылки — возвращает либо пустую строку или «_self», и тогда ссылка будет открываться в том же окне, либо возвращает значение «_blank» и ссылка будет открываться в новом окне.
Про аудитории мы уже говорили, см. предыдущие посты.
Видимость — данные параметр должен определять, скрыта ли ссылка, но он, к сожалению не работает.
Локальность — определяет, указывает ли ссылка на локальный ресурс или внешний (true — внешний)
Тип ветви — может принимать следующие значения (все возможные значения можно найти в перечислении NodeTypes):
Теперь поговорим о настройках навигации, о программном доступе к ним:
Для доступа к ним нам понадобится объект PublishingWeb (находится в библиотеке Microsoft.SharePoint.Publishing).
var publishingWeb = PublishingWeb.GetPublishingWeb(web); //Показать дочерние узлы
var showSubSites = publishingWeb.IncludeSubSitesInNavigation;
//Отображать страницы
var showPages = publishingWeb.IncludePagesInNavigation;
//Тип сортировки
var ordering = publishingWeb.NavigationOrderingMethod;
//Поле сортировки
var sotringField = publishingWeb.NavigationAutomaticSortingMethod;
//Направление сортировки
var sortDirection = publishingWeb.NavigationSortAscending;
(для SharePoint 2010 эти свойства располагаются в объекте publishingWeb.Navigation)
Отображать страницы — определяет, надо ли отображать страницы из системной библиотеки «Страницы»
Тип сортировки — перечисление, может принимать значения:
- OrderingMethod.Automatic — Сортировать автоматически
- OrderingMethod.Manual — Сортировать вручную
- OrderingMethod.ManualWithAutomaticPageSorting — Сортировать страницы автоматически
Поле сортировки — перечисление, может принимать значения:
- AutomaticSortingMethod.Title — Сортировка по названию
- AutomaticSortingMethod.CreatedDate — Сортировка по дате создания
- AutomaticSortingMethod.LastModifiedDate — Сортировка по дате изменения
Направление сортировки — по алфавиту или в обратном порядке (true — по алфавиту)
Кроме этих свойств, PublishingWeb даёт доступ к текущей структуре навигации:
var currentNodes = publishingWeb.CurrentNavigationNodes;
А ещё проверить видимость элемента. Так например проверяется видимость страниц:
if (node.GetProperty("NodeType") == NodeTypes.Page.ToString())
{
if (!publishingWeb.IncludePagesInNavigation)
return false;
var pPages = publishingWeb.GetPublishingPages();
var pPage = pPages[nn.Url];
if (pPage != null && !pPage.IncludeInGlobalNavigation)
return false;
}
Всем приятного программирования!
Комментариев нет:
Отправить комментарий