Skip Ribbon Commands
Skip to main content

SharePoint Cross Site Collection Common Top Navigation

 

James Strugnell

14/03/2012

A recent requirement was called for a SharePoint solution that would allow for cross site collection navigation in large farms.

The main issue was the administration of the navigation as there were 20+ site collections meaning that they all had to be changed one by one. This raised a few issues, time, effort required and consistency.

The farm used a common master page though-out, but they wanted a number of site collections to use the out of the box navigation and then others to use the common navigation.
The solution we came up with was to utilise the ASP.Net site map provider with the SharePoint navigation control within the master page. This solved the problem of having multiple places to edit, but raised a few new ones. As the navigation would not change often this was not a big problem, but it was the ability to change the navigation. Every time you would want to change the navigation then a solution upgrade would have to be performed.

The following is how to implement this as a Visual studio solution:

1. Create a copy of your existing masterpage and add it to the project.

2. Create Assets folder then a folder called Masterpages add the masterpage here.

3. On the Master Page find the following control.

<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server">

         <asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">

                 <SharePoint:AspMenu

                          ID="TopNavigationMenuV4"

                          Runat="server"

                          EnableViewState="false"

                          DataSourceID="topSiteMap"

                          AccessKey="<%$Resources:wss,navigation_accesskey%>"

                          UseSimpleRendering="true"

                          UseSeparateCss="false"

                          Orientation="Horizontal"

                          StaticDisplayLevels="2"

                          MaximumDynamicDisplayLevels="2"

                          SkipLinkText=""

                          CssClass="s4-tn"/>

                  <SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate">

                          <Template_Controls>

                                   <asp:SiteMapDataSource

                                            ShowStartingNode="False"

                                            SiteMapProvider="SPNavigationProvider"

                                            id="topSiteMap"

                                            runat="server"

                                            StartingNodeUrl="sid:1002"/>

                          </Template_Controls>

                 </SharePoint:DelegateControl>

         </asp:ContentPlaceHolder>

</asp:ContentPlaceHolder> 

4. Replace the above code with this:

            <asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server">
            
                        
            <asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">
            
                                
            <SharePoint:AspMenu
            
                                         
            ID="TopNavigationMenuV4"
            
                                         
            Runat="server"
            
                                         
            EnableViewState="false"
            
                                         
            DataSourceID="topSiteMap"
            
                                         
            AccessKey="<%$Resources:wss,navigation_accesskey%>"
            
                                         
            UseSimpleRendering="true"
            
                                         
            UseSeparateCss="false"
            
                                         
            Orientation="Horizontal"
            
                                         
            StaticDisplayLevels="2"
            
                                         
            MaximumDynamicDisplayLevels="4"
            
                                         
            SkipLinkText=""
            
                                         
            CssClass="s4-tn"/>
            
                                
            <SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource1">
            
                                         
            <Template_Controls>
            
                                                  
            <asp:SiteMapDataSource
            
                                                           
            ShowStartingNode="True"
            
                                                           
            SiteMapProvider="CustomTopNavProvider"
            
                                                           
            id="topSiteMap"
            
                                                           
            runat="server" 
            />
            
                                         
            </Template_Controls>
            
                                
            </SharePoint:DelegateControl>
            
                        
            </asp:ContentPlaceHolder>
            </asp:ContentPlaceHolder> 

5. Note that the provider has changed to the customTopNavProvider, configuring the ASPMenu control also allows you to have more control over the Navigation.

6. Save the file and add the following to the Elements.xml of the feature so that the master page is referenced:

            
               <Module Name="Masterpage and Page Layouts" List="116" Url="_catalogs/masterpage" >
    <File Type="GhostableInLibrary" 
Path="Assets\Masterpages\citricCommonNav.master" 
Url="citricCommonNav.master" />
</Module>

7. Add feature event receiver, on feature activated there is an addition to the Web Config that will reference the site map provider, when deactivated this is then removed.

            public override void FeatureActivated(SPFeatureReceiverProperties properties)
            {   
                SPWebApplication webApp = (SPWebApplication)properties.Feature.Parent;
                webConfigMod(true, webApp);
            }
            public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPWebApplication webApp = (SPWebApplication)properties.Feature.Parent;
                webConfigMod(false, webApp);
            }
            private void webConfigMod(bool addOrRemove, SPWebApplication webApp)
            {
                SPWebConfigModification modifyWebConfig = new SPWebConfigModification();
                modifyWebConfig.Path = "configuration/system.web/siteMap/providers";
                modifyWebConfig.Name = "add[@name=\"CustomTopNavProvider\"]";
                modifyWebConfig.Sequence = 0;
                modifyWebConfig.Owner = "add[@name=\"CustomTopNavProvider\"]";
                modifyWebConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
                modifyWebConfig.Value = "<add name=\"CustomTopNavProvider\" 
             siteMapFile=\"/_layouts/1033/Citric/SiteMapProvider/CustomTopNavMenu.sitemap\" 
             type=\"System.Web.XmlSiteMapProvider,System.Web, 
             Version=2.0.0.0, Culture=neutral, 
             PublicKeyToken=b03f5f7f11d50a3a\"/>";

     if (addOrRemove)

                {
                    webApp.WebConfigModifications.Add(modifyWebConfig);
                }
                else
                {
                    for (int c = webApp.WebConfigModifications.Count - 1; c >= 0; c--)
                    {
                        if (webApp.WebConfigModifications[c].Owner == "add[@name=\"CustomTopNavProvider\"]")
                        {
                            webApp.WebConfigModifications.Remove(webApp.WebConfigModifications[c]);
                        }
                    }
                }
                webApp.Update();
                webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            }

8. Add a SharePoint mapped Layouts folder and create the structure as followed.

TEMPLATE  -> LAYOUTS -> 1033 -> CITRIC -> SiteMapProvider

9. Add a new sitemap document to the SiteMapProvider folder.

10. The base document should look something like this:

            
               <?xml version="1.0" encoding="utf-8" ?>
            
               <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
            
                 <siteMapNode url="/" title="Citric" description="">
            
                   <siteMapNode url="/Home" title="Home" description="" />
            
                   <siteMapNode url="/Services" title="Services" description="" >
            
                     <siteMapNode url="/Consultancy" title="Consultancy" description="" />
            
                     <siteMapNode url="/Development" title="Development" description="" />
            
                     <siteMapNode url="/Hosting" title="Hosting" description="" />
            
                     <siteMapNode url="/Support" title="Support" description="" >
            
                       <siteMapNode url="/SubSupport" title="SubSupport" description="" />
            
                     </siteMapNode>
            
                   </siteMapNode>
            
                   <siteMapNode url="/Solutions" title="Solutions" description="" />
            
                   <siteMapNode url="/Case Studies" title="Case Studies" description="" />
            
                   <siteMapNode url="/Citric Blog" title="Citric Blog" description="" />
            
                   <siteMapNode url="/Clients" title="Clients" description="" />
            
                   <siteMapNode url="/About" title="My Business" description="">
            
                   </siteMapNode>
            
                   <siteMapNode url="/search" title="Search" description="" />
            
                 </siteMapNode>
            
               </siteMap>

11. Once all packaged up as a solution, all that is required is to select the common masterpage (edited and deployed above) and your common navigation feature activated.


 About us

Fuse Collaboration Services is a Cloud Solution Provider and Microsoft Gold Partner specialising in delivering SharePoint, Skype for Business, and Azure cloud-based solutions. Based in Northampton, UK.

Microsoft Gold Partner Logo showing 5 competencies

Read more

 Latest Tweets

 Latest Blog

 

 

Have you forgotten about the WannaCry Cyber Attacks already?373<p style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">The NHS cyber attacks were less than two weeks ago yet it feels like it’s been far longer. So much has happened since and if updating your IT infrastructure was on your agenda but has now been put to one side due to other tasks taking priority read on…..</font></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Nobody in the IT world wants to say “I told you so” following &#160;the recent events but the NHS cyber attack should&#160;have made Managing Directors globally, &#160;sit up and listen to their IT advisors. Everyone knows that technology evolves at an alarming pace and our generation has seen the fastest change in this… at least until we land on Mars. </font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">This means instead of ignoring the IT gurus, we should be taking on board their advice and expertise, particularly around cybersecurity; trust us, it’ll save you money in the long run. Why are we not listening to the experts who thankfully know everything about ransomware, patch management, nibbles, craplets and&#160;DOS attacks? (High five if you know any of that!)</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Put it this way&#58; If a doctor told you that you had a hole in your heart requiring immediate surgery, otherwise it’s game over, you would agree to it being patched up immediately, right? The health of your business is just as critical. The body of your business is reliant on your IT infrastructure for keeping your business profitable whilst also allowing the lunchtime google sessions! Your out of date software, your lack of adequate back up and your ancient operating system are causing holes that are potentially lethal for your business. </font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Hackers are more advanced now than ever before , potentially sitting In your system undetected for, on average, over two hundred&#160;days. You need to be ready with the most up-to-date defences you can. The most frustrating part of what has recently happened is that there will be companies out there who will listen to the news, read it in the papers and yet still take the risk, genuinely believing that it will happen to them. If it hasn’t already been drilled in, take a look at a breakdown of last years’ statistics&#58;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><a href="http&#58;//www.hackmageddon.com/category/security/cyber-attacks-statistics/"><span style="text-decoration&#58;underline;"><font color="#0563c1" face="Calibri" size="3">http&#58;//www.hackmageddon.com/category/security/cyber-attacks-statistics/</font></span></a></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Still don’t think you’re at risk?</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;​</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font face="Calibri"><font size="3"><font color="#000000">If the cost implication of a hack doesn’t shock you in to action (and after reading these five case studies from top corporate losses I think it will - </font><a href="https&#58;//hotforsecurity.bitdefender.com/blog/top-5-corporate-losses-due-to-hacking-1820.html"><span style="text-decoration&#58;underline;"><font color="#0563c1">https&#58;//hotforsecurity.bitdefender.com/blog/top-5-corporate-losses-due-to-hacking-1820.html</font></span></a></font></font><font face="Calibri"><font color="#000000" size="3">), then what about the other crippling effects of a hacking that, ultimately, could have been prevented?</font></font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Your reputation would take a hit, especially if thousands of customer’s valuable data including their full names, logins, passwords, e-mails, home addresses, purchase history, and credit card numbers are stolen. It’s a company’s responsibility and legal requirement to keep this information safe. Your customers may jump ship to another competitor, meaning a further hit on your profitability. </font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">In 2016, two thirds of large UK businesses were hit by a cyber breach or attack. Could this number have been reduced? We know it can.</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Fuse Collaboration are experts in the following&#58;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><ul style="margin-top&#58;0in;"><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Cyber Security</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Patch management</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Back up</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Sharepoint</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Azure</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Office 365</span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">System Center </span></li><li style="margin&#58;0px 0px 0px 3px;color&#58;#000000;font-family&#58;&quot;calibri&quot;,sans-serif;font-size&#58;11pt;font-style&#58;normal;font-weight&#58;normal;"><span lang="EN-GB" style="margin&#58;0px;">Dynamics CRM</span></li></ul><p style="margin&#58;0px 0px 0px 51px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;"><font color="#000000" face="Calibri" size="3">Our services include a bespoke combination of business consulting, </font></span><span lang="EN-GB" style="margin&#58;0px;color&#58;#302e2f;font-family&#58;&quot;segoe ui&quot;,sans-serif;font-size&#58;10.5pt;">infrastructure design, SharePoint development and managed services and as a </span><span lang="EN-GB" style="margin&#58;0px;font-family&#58;&quot;segoe ui&quot;,sans-serif;font-size&#58;10.5pt;"><font color="#000000">certified </font><span style="margin&#58;0px;color&#58;#302e2f;">Microsoft Gold Partner you have that added reassurance that your business is in the right hands</span><font color="#000000">. </font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;font-family&#58;&quot;segoe ui&quot;,sans-serif;font-size&#58;10.5pt;"><font color="#000000">&#160;</font></span></p><p style="margin&#58;0px;"><span lang="EN-GB" style="margin&#58;0px;font-family&#58;&quot;segoe ui&quot;,sans-serif;font-size&#58;10.5pt;"><font color="#000000">Any upgrades to your infrastructure can be phased in over a time suitable to your users, business demands and your budget. Our team are experts in delivering what you want - call us on 01604 797979</font><span style="margin&#58;0px;"></span></span></p><p>​​</p>l.ozier@fusecollaboration.com | Louise Ozier | 693A30232E777C6675736563735C6C2E6F7A696572 i:0#.w|fusecs\l.ozier24/05/2017 23:00:002017-05-24T23:00:00Z25/05/2017 14:27:14http://www.fusecollaboration.com/ourblog/Pages/Forms/AllItems.aspxhtmlFalseaspx

 Contact us

Our address
12-14 Brookfield, Duncan Close
Moulton Park, Northampton
NN3 6WL
P: +44(0)1604 797979
Contact Us