La Détection De Haut / Global Des Paramètres De Navigation Par Programmation
-
10-12-2019 - |
Question
Si une collection de sites de publication a réussi ou structurels de navigation défini comme source pour la navigation du haut, comment travaillez-vous avec ces paramètres par programme?L' SPWeb.Navigation.TopNavigationBar
propriété renvoie un ensemble tout à fait différent de nœuds de navigation (en Haut de la Barre de liens sur la non-publication de sites).
Voici quelques captures d'écran de l'INTERFACE utilisateur, où les paramètres dont je parle sont situés:
Pas De Publication De (Lien En Haut De La Barre De Paramètres):
Publication (Global Navigation Paramètres):
Comment pouvez-vous détecter par programmation si un site est à l'aide de la SPNavigation.TopNavigationBar
, Géré de Navigation, ou de structure de Navigation Mondial de Navigation / haut de la page des paramètres de navigation?
La solution
Bon, alors après le regardant dans les rouages du code de derrière pour les paramètres des pages, j'ai trouvé que vous pouvez détecter la source de la publication du site la navigation à l'aide de la WebNavigationSettings
la classe et la lecture de son GlobalNavigation.Source
propriété (un StandardNavigationSource
enum) comme tel:
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
}