Not recommending this as a best practice or anything because there are a lot of inherent dangers on allowing your menu navigation to be changed by a simple publish/unpublish by a content contributor. However, if this happens to fit a specific case need and your content publishers understand the responsibility involved, then here's how to make it happen.
First, create the content structure that you want to have drive a particular menu, next create an active menu link, but instead of having the menu link refer to an external/internal page, populate the code field with velocity as in the example below.
I did not include the Javascript or styling for making the menu look pretty, that would be up to you of course. :-)
##This finds all the articles #foreach($article in $dotcontent.pull("+structureName:Documentation +(conhost:48190c8c-42c4-46af-8d1a-0cd5db894797 conhost:SYSTEM_HOST)",0,"Documentation.title")) ##This finds out IF the article has at least one parent content, which would eliminate it as a Top level Article - we first want to print all top level Articles that have NO parent #set($parentContent = $dotcontent.pullRelated("Parent_Documentation-Child_Documentation","$article.identifier",true,1,"Documentation.title")) ##if the article has no parent, then it is top level lets print it and find the children #if($parentContent.size()!=1) #editContentlet($article.inode) <h2>$article.title</h2> ##finds/prints children of Top level parents only #set($childContent = $dotcontent.pullRelated("Parent_Documentation-Child_Documentation","$article.identifier",false,0,"Documentation.title")) #if($childContent.size()>0) #foreach($child in $childContent) <h3>$velocityCount. $!{child.title}</h3> ##You could keep searching for grandchildren at tertiary level using same methodology #end #end #end #end