Obtenez de Navigation Terme de la Page Actuelle dans otite chronique (JavaScript)
-
10-12-2019 - |
Question
J'essaie d'obtenir les Propriétés Locales pour la Navigation Terme qui est actuellement en cours de visualisation.
Par exemple...Si je navigue à http://sp2013/about/team
J'ai besoin d'obtenir le Local de Propriétés Personnalisées pour le terme L'équipe.
Solution actuelle (problèmes de performances):
- Obtenir le Terme dans l'URL
window.location.pathname
de la page en cours - Obtenir la valeur par défaut du Magasin de termes
- Venir en Groupe à ce Terme dans
- Obtenez de l'Ensemble de termes à ce Terme dans
- Obtenez Terme Sur (de /sur/l'équipe)
- Obtenez Terme L'équipe (de /sur/l'équipe) et ensuite de lire les Propriétés Personnalisées.
Le rendement est très mauvais, car il ya tellement de nombreux executeQueryAsync l'appelle, et le plus profond de l'URL la plus de questions, il y aura!!
D'Autres Solutions Possibles??
- Est-il un moyen pour obtenir juste la Navigation Terme qui est affiché sur la page actuelle avec une seule requête?
- Est-il un moyen de rechercher TOUS les Termes dans un Ensemble de termes d'une récupération Terme basé sur Friendly Url (Amicale Url = fenêtre.emplacement.chemin d'accès)?
La solution 2
Résolu le problème de performances avec l'aide de Robert ainsi que est venu avec une solution optimisée en utilisant getTerms()
pour une recherche sur l'ensemble du Magasin de termes pour le Terme requis:
// Get SP Context
var context = SP.ClientContext.get_current();
// Get the default Term Store for context
var session = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStore = session.getDefaultSiteCollectionTermStore();
// Set up Term Query for termStore.getTerms()
var termQuery = new SP.Taxonomy.LabelMatchInformation(context);
// The language code identifier (LCID) of the Term.labels to be matched
termQuery.set_lcid(1033);
// Determines if only terms available for tagging are returned
termQuery.set_trimUnavailable(false);
// The Label of the Term to get
termQuery.set_termLabel("My Term");
// Get Terms based on termQuery
var termsStoreTerms = termStore.getTerms(termQuery);
// Load em' and run execute query!
context.load(session);
context.load(termStore);
context.load(termsStoreTerms);
context.executeQueryAsync(
function(){
// Get all the terms based on search
var termsEnum = termsStoreTerms.getEnumerator();
// Loop through results
while(termsEnum.moveNext()){
// Current Item in Enumerator Loop
var currentTerm = termsEnum.get_current();
// Get Local Custom Properties
var termLocalCustomProperties = currentTerm.get_localCustomProperties();
}
}, function(sender, args){
// Failure getting Term
var error = 'Failure getting Term: ' + args.get_message() + '\n' + args.get_stackTrace
alert(error);
});
Autres conseils
Vous pouvez utiliser _spFriendlyUrlPageContextInfo.termId
pour obtenir l'expression de l'information(GUID) de la page en cours.