This macro is designed to wrap the stock navigation() macro such that it will default to the current location depth, with a default depth, both of which can be customized. Output is standard based on stock navigation() macro.
#customNavigation()
#set($menuLevel = 4)
#set($menuDepth = 3)
#customNavigation()
## ############################################################################### ## Macro Name: Flexible Navigation Macro ## Version: 1.0 ## Author: Michael Fienen ## Email: fienen@gmail.com ## Description: Uses some extra logic to allow you to create custom navigation ## from the stock nav macro ## ## Required Parameters: ## - none ## ## Optional Parameters: ## - $menuLevel = What level should navgation start at. Default: 2* (int) ## - $menuDepth = How deep should the navigation pull. Default: 2 (int) ## ## * Note: Defaults to 2 unless current depth level > 2, then it defaults to the ## current page level. ## ############################################################################### #macro(customNavigation) ## SEE IF THERE IS A USER SUBMITTED MENU LEVEL #if($UtilMethods.isSet($menuLevel)) #set($level = $menuLevel) ## OTHERWISE WE'LL CALCULATE IT BASED ON LOCATION #else ## FIND OUT WHAT THE CURRENT FOLDER DEPTH IS #set($level = $listTool.size($request.getRequestURI().split("/")) - 1) ## SET A MINIMUM LIMIT ON THE LEVEL #if($level < 2) #set($level = 2) #end #end ## SEE IF THERE IS A USER SUBMITTED DEPTH TO RENDER #if($UtilMethods.isSet($menuDepth)) #set($depth = $menuDepth) ## OTHERWISE DEFAULT TO TWO LEVELS DEEP #else #set($depth = 2) #end ## RUN NAV MACRO WITH SPECIFIED LEVELS OR DEFAULTS #navigation($!level $!depth) #end