NOTE: I have learned since this post that URL changes to existing links and addition of new links do not carry over properly into the pinned navigations. This is “working by design” according to Microsoft. Essentially, when you need to change a link URL or add a new link you need to flip a setting in the term store and give it the link URL. It does not carry over the properties that tell it to be used for navigation. So, this method works pretty well for static navigation, not as well for frequently-updated menus. I still use it because there is not a great solution overall, but it’s not perfect.
Site collections are often described as areas with their own distinct navigation. But what if you want them to share a global navigation, much like any website? This is where metadata navigation, the term store and term pinning come into play.
Step 1 – Create your global term set
Create your term set under one of the global folders (Navigation if you have it, or Global). Under the “Intended Use” tab, check the box for “Use this term set for site navigation.” If you need to change the order of your links (they tend to sort alphabetically), use the Custom Sort tab. To create dropdowns in your navigation, create terms nested under a top-level term.
Step 2 – Set your root site collection to use managed metadata navigation, select this term set
You may ask at this point why your sites can’t all just use the same global term set for navigation. WELL, because SharePoint. It’ll only let you use a single term set once (it gives you an error when you try).
Step 3 – Set your sites to inherit navigation
This is in your Site Settings, under Navigation.
Step 4 – “pin” your navigation terms in your other site collections
Pinning a term set allows you to use those same terms in another location. Any changes made to the original term structure will be reflected everywhere it is pinned. To pin your term set in a new site collection, navigate to that collection’s version of the Term Store and create a new term set in the site collection folder category. Then click the triangle next to the term set and choose “pin term with children,” and select a term tree from your original term set. It will not let you pin the entire set at a time, you have to pin each top-level link separately (it will take the term’s children though). Next go to the sorting tab and re-order them to match the original (again, it likes alphabetical).
Pinning feels a little backwards, you select your destination first and then your source. Make sure to pin in the right direction. 🙂
Step 5 – Rinse, repeat
Set your new collection to use this new pinned term set as it’s navigation, then have your subsites inherit.
Optional – wait a while between steps
I recommend pinning all your term sets first, waiting 24 hours, then setting your navigation. The reason for this is there is a caching issue where you may get a metadata navigation error about half the time your site loads initially. This error goes away after 24 hours or so, but if you want to skip this part you can pin first, set it in the parent, wait a day, then inherit your navigation.
There is a second caching issue that may cause your navigation to load your “old” navigation about 50% of the time after setting your site to inherit – again just for the first 24 hours or so. This is less noticeable for people and goes away after a little while. Not much you can do about this as far as I can tell. I did submit a ticket for both of these, and was told it was a known issue.