SharePoint 2010: укажите PortalSiteMapProvider на определенное семейство сайтов

Можно ли получить OOTB PortalSiteMapProvider для предоставления иерархии сайтов из указанного семейства сайтов или URL-адреса (т.е. не из текущего семейства сайтов) в SharePoint 2010? В MOSS это было возможно только путем создания пользовательского SiteMapProvider, обхода семейств сайтов и создания дерева навигации вручную.

NB. Я не готов написать собственный SiteMapProvider, который читает из статического файла XML (.sitemap), так как обычные участники сайта могут не иметь доступа к файлам в файловой системе.

Немного предыстории... У меня есть одно веб-приложение с двумя семействами сайтов:

  • 1 для моего интранет-портала по адресу http: // intranet / (публикация включена)
  • 1 для личных сайтов по адресу http: // intranet / my (публикация не включена)

У нас нет планов по поддержке нескольких порталов, поэтому я хотел бы, чтобы в обоих семействах сайтов была единая глобальная панель навигации. В идеале я хотел бы, чтобы на Моих сайтах отображалась иерархия сайта с основного сайта портала. Так можно ли установить для свойства PortalSiteMapProvider.CurrentSite значение "http://intranet/" вместо "http: // intranet / my"?

1 ответ

Решение

Чтобы добиться такого поведения, я написал свой собственный веб-сервис, который отключается и пересекает иерархию другого семейства сайтов (используя собственный PortalSiteMapProvider) и возвращает эту структуру в виде XML-документа. Тогда я, очевидно, привязал к этому свое глобальное навигационное навигационное меню.

Я получил понятие отсюда: PortalSiteMapProvider

Здесь описан похожий подход, в котором вместо этого используется HttpHandlers: http://blog.symprogress.com/2011/03/sharepoint2010-custom-navigation-provider-cross-sitecollection/

Другие вопросы по тегам