Showing posts with label Custom Sitemap provider. Show all posts
Showing posts with label Custom Sitemap provider. Show all posts

Sunday, January 26, 2014

Custom Sitemap provider in SharePoint does not show n-level :@

Another genius SharePoint  limitation or issue , If you want to implement your own custom site map provider, To implement your own Sitemap provider on SharePoint you will have to inherit from the following class :
  • -          Microsoft.SharePoint.Publishing.Navigation. PortalSiteMapProvider
  • -          Then you will have to override the following method
    • public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
  • -          After implementing your custom logic with a static or recursive algorithm (In my case was a recursive algorithm to get all navigation terms from Managed Metadata Service in a specific term set), You will find that only 2 levels are showing in the top navigation menu ….weiiiiird
  • -          Ok google it… you will find that this maybe an issue in the <SharePoint:Aspmenu> control in your masterpage which contains a property called MaximumDynamicDisplayLevels,,, OOOOH this maybe my life saver…. :@ but no SharePoint will not make your life that easy.
  • -          Playing around with this property and other properties like StaticDisplayLevels but in vain .
  • -          So what is happening in the background … Time to reflect some code
  • -          Reflecting the  Microsoft.SharePoint.Publishing.Navigation. PortalSiteMapProvider class … Here you will have following  surprise



-          Yes you are seeing it right, Microsoft engineers for some UNKNOWN reason had decided to HARDCODE the MaximumSupportedNodeDepth as a PROTECTED property to be UNACCESSABLE .
-          Now implement your logic but this time inherit for the classic System.Web.StaticSiteMapProvider implement the following methods:
o   public override SiteMapNode BuildSiteMap()
o   protected override SiteMapNode GetRootNodeCore()
-          You now have your own customized top navigation site map provider supporting n-level hierarchy


-          Happy SharePointing :)