Ich versuche eine Sitemap für meine MOSS-Publishing-Site zu erstellen, ich habe zwei Ansätze, aber scheinen mit beiden festgefahren zu sein.Erstellen von Sharepoint/MOSS Sitemap
Mein erster Ansatz ist, die PortalSiteMapProvider zu verwenden, die bereits erstellt und schön im Cache gespeichert ...
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();
aber dies scheint alles in der Websitesammlung zurück (zum Beispiel Listen, surverys). Ich möchte nur die Sharepoint-Webs zeigen.
Mein anderer Ansatz war dieses Stück Code zu verwenden ..
SPSite siteCollection = new SPSite("http://example.org");
SPWebCollection sites = siteCollection.AllWebs;
foreach (SPWeb site in sites)
{
Console.WriteLine(site.Title.ToString() + " " + site.ServerRelativeUrl.ToString());
}
Welche perfekt ist, abgesehen von dem Problem in einer einfachen Liste alle Bahnen zurückzukehren.
Idealerweise möchte ich einen Einzug einfügen können, um untergeordnete Webs anzuzeigen.
ok cool, ich möchte PortalSiteMapProvider verwenden, aber ich bin nicht sicher, wie die Ausgabe beschränken sich nur auf Bahnen. – Rob