3

Is it possible to enforce the same navigation across all SharePoint site in Office365? Codeplex used to have some tools that harmonised them across the sites but I'm not so sure these will work with Office365.

Freebies or scripted solutions preferred.

0

Currently MS is "thinking about it".

Check this Uservoice link - Cross sitecollection navigation

Since we can't wait for MS , we decided to do our custom implementation.In our environment, we are creating a single termset globally and then using custom code to retrieve it and bind it to html.

So, you can follow the below steps:

Go to the below url with SharePoint admin credentials:

https://tenantname-admin.sharepoint.com/_layouts/15/termstoremanager.aspx

Create a Termset as below:

enter image description here

Now each term set has a guid, so based on that you can fetch the terms inside the term set and bind it to the html.

var termSetId = "guid-of-termSet"; 

var context = SP.ClientContext.get_current();
var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStore = taxonomySession.getDefaultSiteCollectionTermStore();
var termSet = termStore.getTermSet(termSetId);
var terms = termSet.getAllTerms();

context.load(termStore);
context.load(terms);

context.executeQueryAsync(function () {

    var termsEnumerator = terms.getEnumerator();
    var data = []; //bind this to html 
    var sort = true;

    while (termsEnumerator.moveNext()) {
        var currentTerm = termsEnumerator.get_current();

        if(currentTerm.get_localCustomProperties()['order'] == undefined)
            sort = false;

        data.push({
            'name': currentTerm.get_name(),
            'url': currentTerm.get_localCustomProperties()['_Sys_Nav_SimpleLinkUrl'],
            'isRoot': currentTerm.get_isRoot(),
            'pathOfTerm': currentTerm.get_pathOfTerm(),
            'order': currentTerm.get_localCustomProperties()['order']
        });     
    }
//logic to bind data to html

},function(){
    console.log("error occured while fetching terms")
});

Modify the above code as per your requirements and UI and add it inside the masterpage or via User Custom Actions.

The advantage of it is that you only need to maintain one termset and any change you make will be reflected across the site collections.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.