4

我正在使用编程方式创建一个 SharePoint 网站

SPWeb spWeb = spSite.AllWebs.Add(...);

我需要运行什么代码来设置 spWeb 以关闭“在导航中显示页面”选项?

回答:

publishingWeb.IncludePagesInNavigation = false;
4

2 回答 2

7

我不确定自己,但我能够找到这个

修改导航是另一个常见的品牌任务,因为它会影响用户可以看到的内容以及他们如何通过站点层次结构进行操作。Microsoft.SharePoint.Publishing 命名空间公开了几个以发布站点基础结构为目标的类,例如 PublishingWeb 和 PublishingPage。使用这些类,我们可以轻松地修改每个站点的导航。如果您希望子 Web 在全局导航中显示为根级站点,请首先关闭从父站点的继承,如下所示:

publishingWeb.InheritGlobalNavigation = false;

您可能还希望从全局导航中隐藏所有站点页面。将 IncludePagesInNavigation 设置为 false 会隐藏站点中的所有页面,无论 PublishingPage.IncludeInGlobalNavigation 属性是否设置为 true

// do not show pages in navigation
publishingWeb.IncludePagesInNavigation = false;

如果您正在处理不从 PublishingWeb 继承的默认站点,仍然可以从全局导航栏中隐藏这些站点。例如,如果您使用协作门户模板创建网站集并希望从全局导航中排除新闻网站,请将该网站添加到该网站的 __GlobalNavigationExcludes 属性:

string globalNavExcludes = String.Empty;
SPWeb webSite = MSDNSiteCollection.RootWeb;
// _GlobalNavigationExcludes property contains a delimited string of 
// GUIDs identifying the Id of each site to be excluded from global
// navigation

if (webSite.AllProperties.ContainsKey("__GlobalNavigationExcludes")) {
  globalNavExcludes = 
    webSite.AllProperties["__GlobalNavigationExcludes"].ToString();
}

SPWeb newsSite = MSDNSiteCollection.AllWebs["News"];
// string is delimited "{GUID};{GUID};",
// use format code B to convert to string
globalNavExcludes += String.Concat(currentWeb.ID.ToString("B"), ";");

webSite.AllProperties["__GlobalNavigationExcludes"] = globalNavExcludes;
webSite.Update();

将导航节点直接添加到 SPNavigationNodeCollection 是仅显示所需节点以及对节点和指向外部站点的链接进行分组的好方法。图 10 显示了如何向全局导航栏添加内部链接、外部链接和标题。此示例解决了影响链接是否在新窗口中打开以及如何处理空 URL 的 SPNavigation 类的一些属性。

于 2008-10-23T01:34:48.830 回答
2

对于 SP 2010,请使用以下...

publishingWeb.Navigation.GlobalIncludePages = false;

于 2011-05-11T07:46:33.957 回答