Настройте текущую навигацию через SharePoint API - PullRequest
2 голосов
/ 12 января 2010

У меня есть требование удалить несколько узлов по умолчанию (т. Е. Людей и групп, сайтов) в текущей левой панели навигации с помощью API-интерфейса SharePoint. Кто-нибудь может дать мне какое-нибудь руководство о том, как этого добиться?

Спасибо, MagicAndi

Ответы [ 2 ]

1 голос
/ 12 января 2010

На основании ответа наивистов:

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
     }
}

Эта статья была также полезна:

1 голос
/ 12 января 2010

Ваш код будет выглядеть примерно так:

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 не английский. Так что было бы лучше найти узел по его идентификатору. Смотрите идентификаторы здесь - http://msdn.microsoft.com/en-us/library/dd587301(office.11).aspx

...