Setup notes on Ben’s Dynamic Navigation CS Add-on

I had a pretty good day.  How ’bout you?  I spent some time today with Ben Tiedt’s Dynamic Navigation Add-On for Community Server.  I needed a submenu on a client Community Server project and whenever I have the opportunity to work with a Ben Tiedt add-on, I’m taking it.

Like all of Ben’s work, this add-on is the tops.  I’m blogging about it because while the readme.txt was good, I had trouble working through the setup to create a submenu.  Here’s a sample of a submenu generated by the add-on.  What’s very slick here and not shown is that a different submenu can easily be configured to display with each main menu item.

 

By adding the dynamicNavigation group element to the theme.config, configuration options will appear in the Control Panel -> Customize Site Theme panel.  Below is a screenshot of the configuration, and I wanted to display it because I didn’t grasp this right away.  Each submenu (or child menu item if using the dropdown option) is preceded with a space and placed under its parent menu item.  “Services” and “Products” reflected in the example above are listed under “Home” with a space.  Thus to create a single submenu for all main menu items, we’d duplicate those items under each parent menu item.

To create a submenu we’d add an additional <GetBen:NavigationList /> control to our master.Master file and set its Level property to “1”.  Sidebar: <GetBen: />  I like that!

 

Another smart feature of the add-on is that it bases menu highlighting on location. The downside is that you can’t override locally with a <CSControl:SelectedNavigation />.  The good news is that Ben provides the full source code so we can always change it.

Article written by

A long time developer, I was an early adopter of Linux in the mid-90's for a few years until I entered corporate environments and worked with Microsoft technologies like ASP, then .NET. In 2008 I released Sueetie, an Online Community Platform built in .NET. In late 2012 I returned to my Linux roots and locked in on Java development. Much of my work is available on GitHub.