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()
${esc.hash}${esc.hash} ${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}
${esc.hash}${esc.hash} Macro Name: Flexible Navigation Macro
${esc.hash}${esc.hash} Version: 1.0
${esc.hash}${esc.hash} Author: Michael Fienen
${esc.hash}${esc.hash} Email: fienen@gmail.com
${esc.hash}${esc.hash} Description: Uses some extra logic to allow you to create custom navigation
${esc.hash}${esc.hash} from the stock nav macro
${esc.hash}${esc.hash}
${esc.hash}${esc.hash} Required Parameters:
${esc.hash}${esc.hash} - none
${esc.hash}${esc.hash}
${esc.hash}${esc.hash} Optional Parameters:
${esc.hash}${esc.hash} - ${esc.dollar}menuLevel = What level should navgation start at. Default: 2* (int)
${esc.hash}${esc.hash} - ${esc.dollar}menuDepth = How deep should the navigation pull. Default: 2 (int)
${esc.hash}${esc.hash}
${esc.hash}${esc.hash} * Note: Defaults to 2 unless current depth level > 2, then it defaults to the
${esc.hash}${esc.hash} current page level.
${esc.hash}${esc.hash} ${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}${esc.hash}
${esc.hash}macro(customNavigation)
${esc.hash}${esc.hash} SEE IF THERE IS A USER SUBMITTED MENU LEVEL
${esc.hash}if(${esc.dollar}UtilMethods.isSet(${esc.dollar}menuLevel))
${esc.hash}set(${esc.dollar}level = ${esc.dollar}menuLevel)
${esc.hash}${esc.hash} OTHERWISE WE'LL CALCULATE IT BASED ON LOCATION
${esc.hash}else
${esc.hash}${esc.hash} FIND OUT WHAT THE CURRENT FOLDER DEPTH IS
${esc.hash}set(${esc.dollar}level = ${esc.dollar}listTool.size(${esc.dollar}request.getRequestURI().split("/")) - 1)
${esc.hash}${esc.hash} SET A MINIMUM LIMIT ON THE LEVEL
${esc.hash}if(${esc.dollar}level < 2)
${esc.hash}set(${esc.dollar}level = 2)
${esc.hash}end
${esc.hash}end
${esc.hash}${esc.hash} SEE IF THERE IS A USER SUBMITTED DEPTH TO RENDER
${esc.hash}if(${esc.dollar}UtilMethods.isSet(${esc.dollar}menuDepth))
${esc.hash}set(${esc.dollar}depth = ${esc.dollar}menuDepth)
${esc.hash}${esc.hash} OTHERWISE DEFAULT TO TWO LEVELS DEEP
${esc.hash}else
${esc.hash}set(${esc.dollar}depth = 2)
${esc.hash}end
${esc.hash}${esc.hash} RUN NAV MACRO WITH SPECIFIED LEVELS OR DEFAULTS
${esc.hash}navigation(${esc.dollar}!level ${esc.dollar}!depth)
${esc.hash}end