CSOM에서 현재 페이지에 대한 탐색 용어 가져오기(JavaScript)
-
10-12-2019 - |
문제
현재 보고 있는 탐색 용어에 대한 로컬 속성을 가져오려고 합니다.
예를 들어...내가 탐색하면 http://sp2013/about/team
해당 용어에 대한 로컬 사용자 정의 속성을 가져와야 합니다. 팀.
현재 솔루션(성능 문제):
- URL에서 용어 가져오기
window.location.pathname
현재 페이지의 - 기본 용어 저장소 가져오기
- 해당 용어가 속한 그룹 가져오기
- 해당 용어가 속한 용어 집합 가져오기
- 기간 얻기 에 대한 (/about/team에서)
- 기간 얻기 팀 (/about/team에서) 그런 다음 사용자 정의 속성을 읽어보세요.
ExecuteQueryAsync가 너무 많이 호출되고 URL이 깊어질수록 더 많은 쿼리가 발생하기 때문에 성능이 매우 나쁩니다!!
다른 가능한 해결책??
- 현재 페이지에서 보고 있는 탐색 용어를 하나의 쿼리로 얻을 수 있는 방법이 있나요?
- 용어의 모든 용어를 검색하는 방법이 있습니까? 친숙한 URL(여기서 친숙한 URL = window.location.pathname)을 기반으로 검색 용어를 설정합니까?
해결책 2
다음의 도움으로 성능 문제를 해결했습니다. 로버트 다음을 사용하여 최적화된 솔루션을 생각해냈습니다. getTerms()
필수 용어에 대해 전체 용어 저장소를 검색하려면 다음을 수행하십시오.
// 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);
});
다른 팁
당신은 사용할 수 있습니다 _spFriendlyUrlPageContextInfo.termId
현재 페이지의 용어 정보(GUID)를 가져옵니다.
제휴하지 않습니다 sharepoint.stackexchange