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

  1. Obtenir le Terme dans l'URL window.location.pathname de la page en cours
  2. Obtenir la valeur par défaut du Magasin de termes
  3. Venir en Groupe à ce Terme dans
  4. Obtenez de l'Ensemble de termes à ce Terme dans
  5. Obtenez Terme Sur (de /sur/l'équipe)
  6. 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)?
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top