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):

Impostazioni della barra di collegamento Top

Publishing (Impostazioni di navigazione globale):

Pubblicazione delle impostazioni di navigazione 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?

È stato utile?

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top