Начну с того что настройка навигации осуществляется в Site Actions - > Site Settings -> Navigation (Look and Feel). В случае если такого раздела нет, необходимо проверить активацию фич:
1. Site Actions -> Site Settings -> Site Collection Administration -> Site collection features -> SharePoint Server Publishing Infrastructure
2. Site Actions -> Site Settings -> Manage site features -> SharePoint Server Publishing 1. Site Actions -> Site Settings -> Site Collection Administration -> Site collection features -> SharePoint Server Publishing Infrastructure
По отношению к сайтам навигация бывает: глобальная и текущая. По расположению на странице, навигация делится на: верхнюю панель навигации и панель быстрого запуска. Глобальная навигация — навигация общая для всех сайтов, в текущей коллекции сайтов.
Текущая навигация — это, соответственно, навигация, присущая текущему сайту.
Текущая навигация — это, соответственно, навигация, присущая текущему сайту.
Верхняя панель навигации — панель, находящаяся под заголовком и логотипом, обычно отображающая названия сайтов в коллекциии (1).
Панель быстрого запуска — левая панель, содержащая ссылки на библиотеки документов, ссылки и т.п. (2).
Программный доступ к навигации осуществляется через объект 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» и ссылка будет открываться в новом окне. Про аудитории мы уже говорили, см. предыдущие посты. Типы которые можно добавлять:
Для доступа к ним нам понадобится объект PublishingWeb (находится в библиотеке Microsoft.SharePoint.Publishing).
//Показать дочерние узлы
var showSubSites = publishingWeb.IncludeSubSitesInNavigation;
//Отображать страницы
var showPages = publishingWeb.IncludePagesInNavigation;
//Тип сортировки
var ordering = publishingWeb.NavigationOrderingMethod;
//Поле сортировки
var sotringField = publishingWeb.NavigationAutomaticSortingMethod;
//Направление сортировки
var sortDirection = publishingWeb.NavigationSortAscending;
(для SharePoint 2010 эти свойства располагаются в объекте publishingWeb.Navigation)
Отображать страницы — определяет, надо ли отображать страницы из системной библиотеки «Site Pages». Тип сортировки — перечисление, может принимать значения:
- OrderingMethod.Automatic — Сортировать автоматически
- OrderingMethod.Manual — Сортировать вручную
- OrderingMethod.ManualWithAutomaticPageSorting — Сортировать страницы автоматически
Поле сортировки — перечисление, может принимать значения:
- AutomaticSortingMethod.Title — Сортировка по названию
- AutomaticSortingMethod.CreatedDate — Сортировка по дате создания
- AutomaticSortingMethod.LastModifiedDate — Сортировка по дате изменения
Направление сортировки — по алфавиту или в обратном порядке (true — по алфавиту)
Кроме этих свойств, PublishingWeb даёт доступ к текущей структуре навигации:
Кроме этих свойств, 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;
}
Отображать страницыДля установки аудиенций:
Отображать страницыДля установки аудиенций:
Установка аудиенций выполняется, путем заполнения аттрибута ноды “Audience”, в формате
{SharepointAudienceID};;{ActiveDirectoryGroupObjectLDAPPath};;{SharepointGroup}, где
{SharepointAudienceID};;{ActiveDirectoryGroupObjectLDAPPath};;{SharepointGroup}, где
- Множественные аудиенции устанавливаются через comma ‘,’ - {SharepointAudienceID1},{SharepointAudienceID2}
- Множественные AD группы разделяются через new line character ‘\n’ - {ActiveDirectoryGroupObjectLDAPPath1},{ActiveDirectoryGroupObjectLDAPPath2}
- Множественные SP группы устанавливаются через comma ‘,’ - {SharepointGroup1},{SharepointGroup2}
Добрый вечер, подскажите пожалуйста, существует ли возможно реализовать на Share Point механизм скрытия ссылок в навигации, в зависимости от прав пользователя
ОтветитьУдалитьДобрый вечер, если речь идет о ссылках, которые располагаются в меню быстрой навигации, то их скрывать можно двумя способами: 1. скриптами, используя апи шарика в них, этот вариант предполагает кучу ручной работы, 2. использовать стандартный механизм (описанный в статье выше) - аудиенций (Audience), обернуть можно так: роли в шарике определятся правами на группу, т.е. необходимо в аудиенции задать нужную тебе группу (ссылка будет отображаться только этой группе)
Удалить