通过SharePoint API自定义当前导航

时间:2010-01-12 12:10:53

标签: sharepoint api sharepoint-2007 navigation

我需要使用SharePoint API删除左侧当前导航栏中的许多默认节点(即人员和组,网站)。任何人都可以给我任何指导如何实现这一目标?

谢谢,MagicAndi

2 个答案:

答案 0 :(得分:1)

您的代码将如下所示:

using (SPSite oSite= new SPSite("http://someurl/")){
    using (SPWeb oWeb = oSite.OpenWeb()){
        foreach (SPNavigationNode oNode in oWeb.Navigation.QuickLaunch)
        {
            if (oNode.Title == "Sites") {
                oNode.Delete();
            }
        }    
    }
}

请注意,不建议按标题查找项目 - 如果web'b语言环境不是英语,则会有所不同。因此,通过其ID找到节点会更好。请在此处查看ID - http://msdn.microsoft.com/en-us/library/dd587301(office.11).aspx

答案 1 :(得分:1)

基于naivists的回答:

public static void DeleteNavigationNodes(string p_sSiteUrl)
{
    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(p_sSiteUrl))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    PublishingWeb pubWeb = null;
                    if (PublishingWeb.IsPublishingWeb(web))
                    {
                        pubWeb = PublishingWeb.GetPublishingWeb(web);

                        foreach (SPNavigationNode node in pubWeb.CurrentNavigationNodes)
                        {
                            if ((node.Id != 1003 ) && (node.Id != 1004 ))
                            {
                                node.Delete();
                            }
                        }

                        pubWeb.Update();           
                    }
                }
            }
        });
    }
    catch (Exception ex)
    {
        // Log error
     }
}

这篇文章也很有用: