Rilevamento delle impostazioni di navigazione superiore / globale a livello di programmazione
-
10-12-2019 - |
Domanda
Se una raccolta di siti di pubblicazione ha gestito o navigazione strutturale impostata come sorgente per la navigazione Top, come si lavora con queste impostazioni programmaticamente? The SPWeb.Navigation.TopNavigationBar
La proprietà restituisce un interamente Set diversi di nodi di navigazione (la barra di collegamento superiore sui siti non editoriali).
Qui ci sono alcuni screenshot dell'interfaccia utente in cui si trovano le impostazioni di cui sto parlando:
Not-Publishing (Impostazioni della barra di collegamento Top):
Publishing (Impostazioni di navigazione globale):
Come si può rilevare a livello di codice se un sito utilizza la generazione SPNavigation.TopNavigationBar
, la navigazione gestita o la navigazione strutturale per la sua navigazione globale / Impostazioni di navigazione Top?
Soluzione
Alright, so after peering into the inner workings of the code behind for those settings pages, I've found that you can detect the source of the publishing site's navigation by using the WebNavigationSettings
class and reading its GlobalNavigation.Source
property (a StandardNavigationSource
enum) like such:
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
}