Я пытаюсь создать карту сайта для моего сайта публикации MOSS, у меня есть два подхода, но похоже, что они застряли в обоих.Создание карты сайта Sharepoint/MOSS
Мой первый подход заключается в использовании PortalSiteMapProvider, который уже создан и красиво кэшированные ...
PublishingWeb rootWeb = PublishingWeb.GetPublishingWeb(SPContext.Current.Site.RootWeb);
//Get the URL of the default page in the web
string defaultPageUrl = rootWeb.DefaultPage.ServerRelativeUrl;
PortalListItemSiteMapNode webNode = (PortalListItemSiteMapNode)PortalSiteMapProvider.CurrentNavSiteMapProviderNoEncode.FindSiteMapNode(defaultPageUrl);
HttpContext.Current.Response.Output.WriteLine("Top Level: " + webNode.Title.ToString() + "<br />");
//iterate through each one of the pages and subsites
foreach (SiteMapNode smnTopLevelItem in webNode.ParentNode.ChildNodes)
{
HttpContext.Current.Response.Output.WriteLine(smnTopLevelItem.Title.ToString() + "<br />");
//if the current sitemap has children, create a submenu for it
if (smnTopLevelItem.HasChildNodes)
{
foreach (SiteMapNode smnChildItem in smnTopLevelItem.ChildNodes)
{
HttpContext.Current.Response.Output.WriteLine(smnChildItem.Title.ToString() + "<br />");
}
}
}
HttpContext.Current.Response.End();
, но это, кажется, вернуть все в семействе веб-сайтов (например, списки, surverys). Я хочу показать веб-сайты Sharepoint.
Мой другой подход должен был использовать этот кусок кода ..
SPSite siteCollection = new SPSite("http://example.org");
SPWebCollection sites = siteCollection.AllWebs;
foreach (SPWeb site in sites)
{
Console.WriteLine(site.Title.ToString() + " " + site.ServerRelativeUrl.ToString());
}
Который совершенен, кроме проблемы возвращения всех полотен в виде плоского списка.
В идеале, я хочу иметь возможность добавлять отступы для отображения дочерних веб-сайтов.
нормально круто, я хотел бы использовать PortalSiteMapProvider, но я не уверен, как ограничить вывод перемычки только. – Rob