gpt4 book ai didi

sharepoint - 创建 Sharepoint/MOSS 站点地图

转载 作者:行者123 更新时间:2023-12-02 06:25:51 24 4
gpt4 key购买 nike

我正在尝试为我的 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();

但这似乎会返回网站集中的所有内容(例如列表、调查)。我只想显示 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 已为您预先缓存,可以在几毫秒内撕裂整个站点结构。

关于您关于 SPSite.AllWebs 的问题,该属性确实会返回所有网站的平面列表。这就是它的用途。如果您只需要直接 子网站的列表,请使用 SPSite.RootWeb.Webs 属性。递归 .Webs 属性中的每个 SPWeb,并依次调用它们的 .Webs 属性以获得 TreeView 。

此外,在处理对象模型时,请确保处理每个网站和站点。如果你不这样做,这将导致史诗般的坏问题。这包括处理 .Webs 集合中的每个网络,即使您没有接触过它也是如此。

编辑:

要使 PortalSiteMapProvider 仅返回网站,请将其 IncludePages 属性设置为 false

关于sharepoint - 创建 Sharepoint/MOSS 站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1039448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com