Usar código para fixar termos aos conjuntos de termos de navegação no SharePoint
Saiba como usar o código para fixar termos nos conjuntos de termos de navegação.
Na criação de taxonomia, fixação é a capacidade de anexar um termo em um destino. O SharePoint apresenta a fixação de termo. Um termo fixado é semelhante a um termo que é reutilizado, exceto que ele é somente leitura e não pode ser alterado no local onde o termo é usado.
Na navegação gerenciada do SharePoint, a API permite fixar termos novos ou existentes em um objeto NavigationTermSet . Em Microsoft SharePoint Server 2010, os usuários poderiam reutilizar termos (e todos os termos aninhados sob os termos reutilizados) em outros locais na hierarquia de termos. Depois que esses termos foram reutilizados, eles podem ser modificados em qualquer local e as alterações seriam ser vistas em todos os lugares os termos foram reutilizados.
Conceitos básicos de fixação de termos
Para entender a fixação no SharePoint, talvez você queira saber mais sobre metadados gerenciados, termos, conjuntos de termos, navegação gerenciada, o armazenamento de termos e outros conceitos e APIs relacionados. A tabela 1 descreve artigos que fornecem mais informações sobre fixação.
Tabela 1. Conceitos principais para fixação
Título do artigo | Descrição |
---|---|
A Brief Introduction to Enterprise Metadata Management for Microsoft SharePoint Server 2010 Developers |
Escrito para SharePoint Server 2010, este artigo fornece uma visão geral básica dos metadados corporativos gerenciados conceitos principais e de modelo, como termos e conjuntos de programação. |
Navegação gerenciada no SharePoint |
Uma introdução ao recurso de navegação gerenciada controlado por taxonomia no SharePoint. |
Use o código para concluir as tarefas de fixação
Você pode usar o código personalizado do .NET server, .NET cliente (CSOM), Silverlight ou JavaScript modelos de programação para concluir as operações de fixação em termos e conjuntos. Os seguintes exemplos de código do .NET server incluem um teste de fixação termos a conjuntos de termos de navegação e um método que você pode usar para testar se um objeto Term é vinculado a um objeto especificado TermSet. Em seguida, o teste cria objetos Term e pins um para o objeto especificado NavigationTermSet.
Para fixar termos a conjuntos de termos de navegação
O exemplo a seguir testa fixação termos a conjuntos de termos de navegação. Ele usa o objeto NavigationTermSet, que contém métodos e propriedades úteis em cenários de navegação gerenciada, como criar menus de navegação de site controlados por taxonomia.
O exemplo primeiro verifica se existe um objeto NavigationTermSet . Se um não existir, o código criará um NavigationTermSet. (Se já existir, o código excluirá o antigo antes de criar um novo). Em seguida, depois que o código cria alguns objetos term para escolher, ele cria um arquivo de página de publicação (.aspx) para fins de demonstração, define-o como a página de destino personalizada para termos fixados e, em seguida, fixa algumas propriedades de navegação na página.
public void TermPinningTest()
{
using (SPSite site = new SPSite(TestConfig.ServerUrl))
{
using (SPWeb web = site.OpenWeb())
{
TaxonomySession taxonomySession = new TaxonomySession(site, updateCache: true);
// Create the navigation term set.
NavigationTermSet menuNavTermSet = DemoUtilities.SetUpSampleNavTermSet(
this.TestContext, taxonomySession, web);
TermSet menuTaxTermSet = menuNavTermSet.GetTaxonomyTermSet();
TermStore termStore = menuTaxTermSet.TermStore;
Group group = menuTaxTermSet.Group;
// Does the tagging Taxonomy term set already exist?
TermSet taggingTaxTermSet = group.TermSets.FirstOrDefault(
ts => ts.Id == TestConfig.TaggingTermSetId);
if (taggingTaxTermSet != null)
{
Log("Deleting old tagging term set");
// If the tagging Taxonomy term set already exists, delete the old one.
taggingTaxTermSet.Delete();
termStore.CommitAll();
}
Log("Creating the tagging term set");
taggingTaxTermSet = group.CreateTermSet("Demo Tagging TermSet", TestConfig.TaggingTermSetId);
int lcid = termStore.WorkingLanguage;
// Create some terms.
Term taggingProductsTaxTerm = taggingTaxTermSet.CreateTerm("Products", lcid);
taggingProductsTaxTerm.CreateTerm("Electronics", lcid);
taggingProductsTaxTerm.CreateTerm("Footwear", lcid);
taggingProductsTaxTerm.CreateTerm("Sports", lcid);
termStore.CommitAll();
/// Pinning the products subtree. Pins the "Products" Term object to the NavigationTermSet object.
Term menuProductsTaxTerm = menuTaxTermSet.ReuseTermWithPinning(taggingProductsTaxTerm);
termStore.CommitAll();
/// Creating the publishing page template DemoTargetPage.aspx");
PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
SPListItem pageListItem = null;
PublishingPage publishingPage;
try
{
pageListItem = web.GetListItem(web.Url + "/Pages/DemoTargetPage.aspx");
publishingPage = PublishingPage.GetPublishingPage(pageListItem);
}
catch (FileNotFoundException)
{
Log("Creating new target page");
publishingPage = publishingWeb.AddPublishingPage("DemoTargetPage.aspx", publishingWeb.DefaultPageLayout);
Log("Checking in target page draft");
publishingPage.CheckIn("TermPinningTest");
}
// Set a custom target page for the pinned terms and then set some navigation properties.
// Normally the navigation objects are obtained by way of an optimized function such as
// TaxonomyNavigation.GetTermSetForWeb() or TaxonomyNavigationContext.Current.NavigationTerm.
// The function guarantees that URLs will be resolved using a valid NavigationTerm.View.
// But because we are populating totally new data, the cache will probably not be updated
// yet, so instead we manually construct a view using GetAsResolvedByWeb().
NavigationTerm menuProductsNavTerm = NavigationTerm.GetAsResolvedByWeb(menuProductsTaxTerm,
web, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider);
menuProductsNavTerm.TargetUrl.Value = publishingPage.Uri.AbsolutePath;
menuProductsNavTerm.TargetUrlForChildTerms.Value = publishingPage.Uri.AbsolutePath;
termStore.CommitAll();
Log("TermPinningTest completed successfully");
}
}
}