Navegação gerenciada no SharePoint
Saiba mais sobre o recurso de navegação gerenciada controlado por taxonomia no SharePoint.
Apresentando a navegação gerenciada
Uma navegação bem projetada informa os usuários do seu site muito sobre os negócios, produtos e serviços que oferece o site. Atualizando a taxonomia por trás do painel de navegação, empresas podem unidade e acompanhe alteração sem recriar sua navegação de site no processo. No SharePoint, o recurso de navegação gerenciada permite projetar a navegação do site que é impulsionada por metadados gerenciados e criar URLs amigáveis ao SEO derivadas da estrutura de navegação gerenciada. Navegação gerenciada oferece uma alternativa para o recurso de navegação tradicional do SharePoint estruturados navegação que baseia-se na estrutura do SharePoint. Porque a navegação gerenciada é orientada por taxonomia, você pode usá-lo à navegação do site de design em torno de conceitos importantes de negócios sem alterar a estrutura dos sites ou componentes do site.
Funciona como gerenciada de navegação
Navegação gerenciada fornece uma estrutura para páginas geradas dinamicamente e fornece uma URL amigável para a SEO associada. Cada página gerada é representada na hierarquia de navegação. Em vez de exigir que as páginas separadas a ser criado para cada categoria na taxonomia, o framework oferece um mecanismo de modelagem e herança que cria as páginas de aterrissagem para cada link de navegação. Você pode usar o recurso de páginas de tópico para personalizar a experiência de página de aterrissagem.
As APIs de navegação gerenciada são incorporadas à taxonomia e à publicação de bibliotecas no SharePoint. Componentes, como conjuntos de termos e o repositório de termos são usados para habilitar orientado a taxonomia navegação do seu site de metadados gerenciados de. Na biblioteca de classes do servidor .NET, o namespace Microsoft.SharePoint.Publishing.Navigation contém termos, conjunto de termos e outros objetos de classe que espelham a classe Term e a classe TermSet no namespace de navegação Microsoft.SharePoint.Taxonomy , fornecendo métodos e propriedades especificamente projetadas para associar esses itens de metadados a elementos de navegação. Outras classes, como TaxonomySiteMapNode , permitem que você fornecer metadados com vários elementos de navegação do site, como nós de mapa do site e outras partes de navegação do seu site. Outras classes de habilitar o cache e contexto de navegação gerenciada.
Você pode exibir os links de navegação orientada a taxonomia no painel de navegação Global. Painel de navegação Global é uma camada de navegação com um ou mais camadas do sempre presentes, que frequentemente aparece na parte superior de um site e exibe as categorias de conteúdo de nível superior. Você também pode exibir esses links no atual navegação controle que geralmente aparece no lado esquerdo de uma página. O controle de navegação atual representa o próximo nível da hierarquia para a categoria escolhida na navegação Global ou um conjunto de links que pertencem a essa categoria.
URLs amigáveis e o provedor de navegação gerenciada
Ao navegar até um site do SharePoint pela primeira vez, você poderá notar que o formato de URL foi alterado. Em vez de um endereço com uma /Pages/default.aspx
extensão, a URL da página termina com apenas /
. Navegação gerenciada fornece um esquema de URLs amigáveis que é consistente em sites, categoria e páginas de item.
O provedor de navegação gerenciada ativa essa experiência. Quando você navega até a raiz de qualquer site que usa o provedor de navegação gerenciada, a página de boas-vindas do Site configurando controles a página que carregou e exibidos no navegador, mas a URL (e que aparece nos resultados da pesquisa) será reconfigurada para esse formato mais amigável.
Qualquer página, incluindo a página de boas-vindas do seu site, pode ter um URL amigável. Dependendo de como configurar seu site, a maioria das páginas automaticamente Obtenha um URL amigável. URLs amigáveis podem ser localizadas.
APIs de navegação gerenciada
A API de taxonomia fornece vários novos métodos e propriedades no SharePoint que você pode usar para personalizar termos, conjuntos de termos e outros elementos de metadados no armazenamento de termos para uso em cenários de navegação do site. Essas APIs estão disponíveis na .NET client, .NET server, Silverlight e JavaScript modelos de programação.
Exemplo de código: Personalizando navegação com o modelo (CSOM) do objeto .NET client API gerenciada
Quando você usa o modelo de objeto do cliente .NET para taxonomia, você pode criar um novo termo de navegação definido se armazenar um termo existe para o conjunto de sites atual, ou converter um conjunto de termos existente em uma que suporta a navegação gerenciada.
public class NavigationTermSetTests
{
public void CreateNavigationTermSet()
{
ClientContext clientContext = new ClientContext(TestConfig.ServerUrl);
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(clientContext);
taxonomySession.UpdateCache();
clientContext.Load(taxonomySession, ts => ts.TermStores);
clientContext.ExecuteQuery();
if (taxonomySession.TermStores.Count == 0)
throw new InvalidOperationException("The Taxonomy Service is offline or missing");
TermStore termStore = taxonomySession.TermStores[0];
clientContext.Load(termStore,
ts => ts.Name,
ts => ts.WorkingLanguage);
// Does the TermSet object already exist?
TermSet existingTermSet;
// Handles an error that occurs if the return value is null.
ExceptionHandlingScope exceptionScope = new ExceptionHandlingScope(clientContext);
using (exceptionScope.StartScope())
{
using (exceptionScope.StartTry())
{
existingTermSet = termStore.GetTermSet(TestConfig.NavTermSetId);
}
using (exceptionScope.StartCatch())
{
}
}
clientContext.ExecuteQuery();
if (!existingTermSet.ServerObjectIsNull.Value)
{
Log("CreateNavigationTermSet(): Deleting old TermSet");
existingTermSet.DeleteObject();
termStore.CommitAll();
clientContext.ExecuteQuery();
}
Log("CreateNavigationTermSet(): Creating new TermSet");
// Creates a new TermSet object.
TermGroup siteCollectionGroup = termStore.GetSiteCollectionGroup(clientContext.Site,
createIfMissing: true);
TermSet termSet = siteCollectionGroup.CreateTermSet("Navigation Demo", TestConfig.NavTermSetId,
termStore.WorkingLanguage);
termStore.CommitAll();
clientContext.ExecuteQuery();
NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(clientContext,
termSet, clientContext.Web, "GlobalNavigationTaxonomyProvider");
navTermSet.IsNavigationTermSet = true;
navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx";
termStore.CommitAll();
clientContext.ExecuteQuery();
NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink, Guid.NewGuid());
term1.SimpleLinkUrl = "http://www.bing.com/";
Guid term2Guid = new Guid("87FAA433-4E3E-4500-AA5B-E04330B12ACD");
NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl,
term2Guid);
NavigationTerm childTerm = term2.CreateTerm("Term 2 child", NavigationLinkType.FriendlyUrl, Guid.NewGuid());
childTerm.GetTaxonomyTerm().TermStore.CommitAll();
clientContext.ExecuteQuery();
}
}
Exemplo de código: Personalizando navegação com o modelo de objeto do .NET server API gerenciada
Você pode usar as classes e métodos de taxonomia do servidor .NET nos namespaces Microsoft.SharePoint.Taxonomy e Microsoft.SharePoint.Publishing.Navigation para criar um novo conjunto de termos de navegação.
///Create a navigation term set.
using (SPSite site = new SPSite(TestConfig.ServerUrl))
{
using (SPWeb web = site.OpenWeb())
{
TaxonomySession taxonomySession = new TaxonomySession(site, updateCache: true);
/// Use the first TermStore object in the list.
if (taxonomySession.TermStores.Count == 0)
throw new InvalidOperationException("The Taxonomy Service is offline or missing");
TermStore termStore = taxonomySession.TermStores[0];
/// Does the TermSet object already exist?
TermSet existingTermSet = termStore.GetTermSet(TestConfig.NavTermSetId);
if (existingTermSet != null)
{
Log("CreateNavigationTermSet(): Deleting old TermSet");
existingTermSet.Delete();
termStore.CommitAll();
}
Log("CreateNavigationTermSet(): Creating new TermSet");
/// Create a new TermSet object.
Group siteCollectionGroup = termStore.GetSiteCollectionGroup(site);
TermSet termSet = siteCollectionGroup.CreateTermSet("Navigation Demo", TestConfig.NavTermSetId);
NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(termSet, web,
StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider);
navTermSet.IsNavigationTermSet = true;
navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx";
NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink);
term1.SimpleLinkUrl = "http://www.bing.com/";
Guid term2Guid = new Guid("87FAA433-4E3E-4500-AA5B-E04330B12ACD");
NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl,
term2Guid);
/// Verify that the NavigationTermSetView is being applied correctly.
Assert.AreEqual(web.ServerRelativeUrl + "/term-2", term2.GetResolvedDisplayUrl(null).ToString());
string expectedTargetUrl = web.ServerRelativeUrl
+ "/Pages/Topics/Topic.aspx?TermStoreId=" + termStore.Id.ToString()
+ "&TermSetId=" + TestConfig.NavTermSetId.ToString()
+ "&TermId=" + term2Guid.ToString();
Assert.AreEqual(expectedTargetUrl, term2.GetResolvedTargetUrl(null, null).ToString());
NavigationTerm childTerm = term2.CreateTerm("Term 2 child", NavigationLinkType.FriendlyUrl);
Assert.AreEqual(web.ServerRelativeUrl + "/term-2/term-2-child", childTerm.GetResolvedDisplayUrl(null).ToString());
/// Commit changes.
childTerm.GetTaxonomyTerm().TermStore.CommitAll();
}
}