Распространение хлебных крошек SharePoint на несколько семейств сайтов - PullRequest
1 голос
/ 19 июня 2009

Я пытался найти способ распространения хлебных крошек SharePoint на несколько семейств сайтов, и мне не удалось найти способ. Я могу установить параметр подключение сайта портала в семействе сайтов, чтобы связать его с родительским семейством сайтов. Но это не будет отображать только одно родительское семейство сайтов. Вот пример типа установки, которую я рассматриваю при создании.

Корневой сайт, Интранет, имеет управляемый путь, называемый сайтами. Под сайтами находится семейство сайтов HR , расположенное по адресу / sites / hr / . В отделе кадров существует еще один управляемый путь, который называется аутрич. В аутрич-работе есть семейство сайтов под названием Рекрутинг , расположенное по адресу / sites / hr / outreach / recruiting / . Таким образом, когда пользователь находится на сайте рекрутинга, я хочу, чтобы он видел Интранет> HR> Рекрутинг в качестве следа крошки.

Пример карты сайта:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode title="Intranet" url="http://intranet/Pages/Default.aspx">
    <siteMapNode title="HR" url="http://intranet/sites/hr/default.aspx">
            <siteMapNode title="Recruiting" url="http://inranet/hr/outreach/recruiting/default.aspx"/>
        </siteMapNode>
    </siteMapNode>
</siteMap>

Настройка соединения с сайтом портала при рекрутинге Я могу получить HR> Рекрутинг , когда вы занимаетесь рекрутингом, и установить соединение с сайтом портала на HR Я могу получить Интранет> HR , когда вы находятся на сайте HR. Хотя я не могу.

Я пытался использовать SPXmlContentMapProvider для чтения файла карты сайта, но мне не удалось его отобразить вообще, когда я установил его как SiteMapProvider для SiteMapPath из GlobalNavigationSiteMap в default.master . ( GlobalNavigationSiteMap - это SiteMapPath, который создает хлебные крошки в верхней части сайта). Однако та же архитектура хорошо работает в типичном приложении .NET, но, похоже, не работает в SharePoint. Я также правильно зарегистрировал карту сайта как defaultProvider и смог использовать ее для замены TopNavigationMenu . ( TopNavigationMenu - глобальное навигационное меню / панель кнопок в верхней части макета SharePoint по умолчанию).

Есть ли способ на самом деле встроить эту функцию в SharePoint?

Ответы [ 2 ]

2 голосов
/ 21 июля 2009

Поскольку вы реализуете пользовательскую мастер-страницу (или настраиваете по умолчанию), почему бы не заменить элемент управления breadcrumb своим собственным? Или создайте собственного провайдера карты сайта, если вам нужно объединить карту сайта с сгенерированной картой Sharepoint.

0 голосов
/ 21 июля 2009

Я много думал о том, почему вы не можете использовать SPXmlContentMapProvider , и я думаю, что все сводится к тому, как SharePoint отображает и использует управляемые пути. Моя теория такова:

Все местоположения семейства сайтов в SharePoint являются управляемыми путями. Поскольку содержимое действительно хранится в базе данных, и хотя IIS представляет информацию, как будто она находится в папке, страницы не расположены в папках. Вместо этого местоположение находится где-то в «эфире» SharePoint, и где бы оно ни находилось SPXmlContentMapProvider , оно находится где-то еще, чем записи в XML-файле. Теперь Request.Url знает, где вы находитесь, но эта информация не представляется для SPXmlContentMapProvider .

Я также нашел способ обойти эту проблему. Вы можете вручную отредактировать главную страницу для каждого семейства сайтов, чтобы прикрепить цепочку хлебных крошек для этого семейства сайтов перед GlobalNavigationSiteMap . Таким образом, у каждого семейства сайтов с этим навигационным требованием должна быть своя собственная главная страница. Это уродливый, грубый способ делать вещи, которые я не собираюсь реализовывать. Это сработало бы, но было бы кошмаром обслуживания.

...