跨多个网站集扩展SharePoint面包屑

时间:2009-06-19 17:37:45

标签: .net sharepoint sharepoint-2007 navigation breadcrumbs

我一直在努力寻找一种方法来跨多个网站集扩展SharePoint面包屑,我一直无法找到方法。我可以在网站集上设置门户网站连接设置以链接到其父网站集。但是,这不会只显示一个父网站集。这是我正在创建的设置类型的示例。

根网站Intranet有一个名为sites的托管路径。在网站下面有名为 HR 的网站集,位于 / sites / hr / 。在HR下,还有另一个名为outreach的托管路径。在外展活动中,有一个名为招募的网站集位于 / sites / hr / outreach / recruiting / 。因此,当用户在招聘网站中时,我希望他们看到 Intranet> 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&gt;招募当您在HR上招募和设置门户网站连接时,我可以获得 Intranet&gt;人力资源,当您在人力资源网站时。我不能。

我尝试使用 SPXmlContentMapProvider 来阅读站点地图文件,但当我将其设置为 SiteMapProvider 时,我一直无法显示该文件。对于 default.master GlobalNavigationSiteMap 的SiteMapPath。 ( GlobalNavigationSiteMap 是在网站顶部创建面包屑的SiteMapPath)。但是,相同的体系结构在通用.NET应用程序上运行良好,但似乎在SharePoint中不起作用。我还正确地将站点地图注册为 defaultProvider ,并且能够使用它来替换 TopNavigationMenu 。 ( TopNavigationMenu 是默认SharePoint布局顶部的全局导航菜单/按钮栏。)

有没有办法在SharePoint中实际构建此功能?

2 个答案:

答案 0 :(得分:2)

由于您正在实现自定义母版页(或自定义默认母版页),为什么不用自己的替换面包屑控件?如果您需要将站点地图与Sharepoint生成的地图合并,请创建自定义站点地图提供程序。

答案 1 :(得分:0)

我已经考虑过很多关于为什么不能使用 SPXmlContentMapProvider 的问题,我认为这取决于SharePoint如何呈现和使用托管路径。我的理论是这样的:

SharePoint中的所有网站集位置都是托管路径。由于内容确实存储在数据库中,并且IIS在文件夹中显示类似信息,因此页面不在文件夹中。相反,该位置位于SharePoint的“以太”中,无论位置 SPXmlContentMapProvider 看到它本身在哪里,它都在xml文件中的其他位置。现在,Request.Url确实知道你在哪里,但该信息似乎没有呈现给 SPXmlContentMapProvider

我也想出了解决这个问题的方法。您可以手动编辑每个网站集的母版页,以便在 GlobalNavigationSiteMap 前面粘贴该网站集的面包屑跟踪。因此,具有此导航要求的每个网站集都需要拥有自己的自定义母版页。这是一种丑陋,蛮力的做事方式,我无意实施。它会起作用,但会成为维护的噩梦。