Set Taxonomy Field Value using Client Object Model in publishing page

Many time there are some cases. when people add or updates the publishing page it requires to set some field values. In this case I have covered Taxonomy Field.


Following code will get current publishing page and set Taxonomy field Page Type to its value.

// Comment


 jQuery(document).ready(function () {
var pagelayout = "";

//current context
var context = SP.ClientContext.get_current();

// current web
var web = context.get_web(); 

// get pages library of current site
var currentPageLibrary = web.get_lists().getById(_spPageContextInfo.pageListId); 

// get and load page item which is rendered
var currentPageItem = currentPageLibrary.getItemById(_spPageContextInfo.pageItemId);
context.load(currentPageItem);

 context.executeQueryAsync(function() { 

 // get pagelayoutname
   var itm = currentPageItem.get_item("PublishingPageLayout");
   
   if(itm != null)
  pagelayout = itm.get_description(); 
  
  // get id of TaxonomyField Id 
   var countriesControlId =jQuery("div[id*='Taxonomy_ctl02']").attr('id');

  // get all taxonomy from term store and set value to field   
   TaxonomyOperations(countriesControlId,pagelayout);
  
 });
});


//Set Taxonomy ControlObject value
//webTaggingId - TaxonomyWebTaggingControl ID 
//termValue - represents a single value held in a TaxonomyField object using the following format: NameOfTerm | GUIDOfTerm 

function setTaxonomyControlObjectValue(webTaggingId, termValue) {
    var webTaggingCtl = $get(webTaggingId);
    var taxCtlObj = new Microsoft.SharePoint.Taxonomy.ControlObject(webTaggingCtl);
    taxCtlObj.enableControl(true);
    taxCtlObj.setRawText(termValue);
    taxCtlObj.retrieveTerms();
}


function TaxonomyOperations(countriesControlId,pagelayoutname) {
    //Current Context
    var ctx = SP.ClientContext.get_current();
    //Current Taxonomy Session
    var taxoSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(ctx );
    //Term Stores
    var trmStores = taxoSession.get_termStores();
    //Name of the Term Store from which to get the Terms.
    var trmStore = trmStores.getByName("Taxonomy_/2w8F+c5EEwppwXCWYn/w=="); // Taxonomy_/2w8F+c5EEwppwXCWYn/w== (Term Store ID)
    //GUID of Term Set from which to get the Terms.
    var termSet = trmStore.getTermSet("---TermStoreGUID----");
 
 // get all terms
    var terms = termSet.getAllTerms();
    context.load(terms);
 
    context.executeQueryAsync(function () {
        var termEnumerator = terms.getEnumerator();
        var termList = "";
  // loop all termSet
        while (termEnumerator.moveNext()) {
          var currentTerm = termEnumerator.get_current();
          var termvalue = currentTerm.get_name();
          var termid = currentTerm.get_id();
          
    // Match term name and pagelayoutname
          if(termvalue == pagelayoutname)
          {
            termList += termvalue +'|'+termid;
   
   // call function for setting up taxonomy controls
            setTaxonomyControlObjectValue(countriesControlId, termList);
          }
        }
        
    }, function (sender, args) {
        console.log(args.get_message());
    });
}

Popular posts from this blog

Custom Form Base Login Web Part With Sharepoint 2010

Real World Branding with SharePoint 2010 Publishing Sites