A Detecção De Topo / Global Definições De Navegação Através De Programação
-
10-12-2019 - |
Pergunta
Se um conjunto de sites de publicação conseguiu ou estruturais de navegação definido como a origem para a navegação superior, como é o seu trabalho com estas definições através de programação?O SPWeb.Navigation.TopNavigationBar
propriedade retorna um conjunto inteiramente diferente de nós de navegação (Barra de links Superior sobre a não publicação de sites).
Aqui estão algumas capturas de tela de INTERFACE do usuário, onde as configurações que eu estou falando, estão localizados:
Não-Publicação (Barra De Link Superior Configurações):
Publicação (Global Definições De Navegação):
Como você pode detectar programaticamente se um site está usando a SPNavigation.TopNavigationBar
, Gerenciados de Navegação, ou Estrutural de Navegação Global Navegação / top definições de navegação?
Solução
Então, depois olhando para o funcionamento interno do código de trás para aqueles páginas de configurações, descobri que é possível detectar a origem da publicação de navegação do site usando o WebNavigationSettings
classe e da leitura GlobalNavigation.Source
propriedade (um StandardNavigationSource
enum) como tais:
if (PublishingWeb.IsPublishingWeb(web))
{
WebNavigationSettings settings = new WebNavigationSettings(web);
switch (settings.GlobalNavigation.Source)
{
case StandardNavigationSource.PortalProvider:
// Data source is Structured Navigation
break;
case StandardNavigationSource.TaxonomyProvider:
// Data source is Managed Navigation
break;
case StandardNavigationSource.InheritFromParentWeb:
// Root navigation data source is inherited
break;
case StandardNavigationSource.Unknown:
// The documentation for this value states:
// "Returns a value of unknown to indicate an advanced configuration
// that does not correspond to one of the standard configurations.
// This value cannot be manually assigned to the Source property."
break;
}
}
else
{
// Non-publishing site, root source is SPNavigation.TopNavigationBar
}