Распространение хлебных крошек SharePoint на несколько семейств сайтов

StackOverflow https://stackoverflow.com/questions/1019150

Вопрос

Я пытался найти способ распространения хлебных крошек 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?

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top