SharePoint 2013/2016. Настройка хлебных крошек
Как это работает
За отображение хлебных крошек в навигации отвечает контрол SPTitleBreadcrumb:
Вот так выглядит его декларация в master page:
<SharePoint:SPTitleBreadcrumb
runat="server"
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
<PathSeparatorTemplate>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PathSeparatorTemplate>
</SharePoint:SPTitleBreadcrumb>
По умолчанию хлебные крошки отображаются следующим образом:
- Ссылки на родительские сайты не отображаются;
- В корневой папке библиотеке/списке ссылка на родительский сайт не отображается;
- На домашней странице сайта отображается имя сайта вместо имени страницы.
Т.е. навигация из коробки довольно скудная и очень часто не нравится пользователям. Поэтому надо её настраивать.
Возможные параметры
Название сайта вместо имени страницы
По умолчанию вместо имени домашней страницы сайта отображается название сайта. Поведение разумно, т.к. обычно домашние страницы имеют неинформативные имена ("Home", "Домашняя страница", "Default", ...). Тем не менее булевым свойством WelcomePageUsesWebTitle можно управлять поведением контрола. Указываем False:
<SharePoint:SPTitleBreadcrumb
runat="server"
**WelcomePageUsesWebTitle="False"**
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
<PathSeparatorTemplate>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PathSeparatorTemplate>
</SharePoint:SPTitleBreadcrumb>
и получаем имя страницы вместо название сайта:
Кол-во родительских уровней
Также можно изменить кол-во родительских сайтов, отображаемых в навигации. Для это указываем значение свойства DefaultParentLevelsDisplayed (по умолчанию 1):
<SharePoint:SPTitleBreadcrumb
runat="server"
**DefaultParentLevelsDisplayed="10"**
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
<PathSeparatorTemplate>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PathSeparatorTemplate>
</SharePoint:SPTitleBreadcrumb>
И получаем результат:
Этот параметр не относится к навигации внутри списка/библиотеки.
Кол-во родительских уровней внутри списка/библиотеки
Для изменения кол-ва уровней внутри библиотеки/списка используем свойство ParentLevelsDisplayedInFolder (совместно с выше указанным свойством):
<SharePoint:SPTitleBreadcrumb
runat="server"
**DefaultParentLevelsDisplayed="10"**
**ParentLevelsDisplayedInFolder="10"**
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
<PathSeparatorTemplate>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PathSeparatorTemplate>
</SharePoint:SPTitleBreadcrumb>
и получаем результат:
На этом возможности SharePoint заканчиваются, остаются унаследованные свойства.
Направление сортировки
Направление может быть от родителя к текущему (RootToCurrent) или наоборот, от текущего к родителю (CurrentToRoot). Эти значения можно указать в свойстве PathDirection:
<SharePoint:SPTitleBreadcrumb
runat="server"
DefaultParentLevelsDisplayed="10"
ParentLevelsDisplayedInFolder="10"
**PathDirection="CurrentToRoot"**
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
<PathSeparatorTemplate>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PathSeparatorTemplate>
</SharePoint:SPTitleBreadcrumb>
И результат в браузере:
Разделитель
Разделитель можно указать, используя свойство, например, PathSeparator и удалив свойство PathSeparatorTemplate:
<SharePoint:SPTitleBreadcrumb
runat="server"
DefaultParentLevelsDisplayed="10"
ParentLevelsDisplayedInFolder="10"
**PathSeparator="➛"**
RenderCurrentNodeAsLink="true"
SiteMapProvider="SPContentMapProvider"
CentralAdminSiteMapProvider="SPXmlAdminContentMapProvider">
</SharePoint:SPTitleBreadcrumb>
и результат:
Остальные свойства не столь интересны, их пропустим.
Стили
Когда уровней в навигации больше чем два (по умолчанию), то возникает проблема с размером самой навигации. Размер текста можно задать, переопределив класс ms-core-pageTitle любым удобным способом:
.ms-core-pageTitle{
font-size: 1.75em;
}
и результат:
Где и как настраивать
Настроить хлебные крошки в SharePoint можно, отредактировав главную страницу. Для этого можно использовать SharePoint Designer:
Пользуемся!