From a theming perspective, it's incredibly hard to work with menu output. When trying to do drop-down menus, or anything the requires running your menus through menu_tree() you are left with zero context. This can be incredibly frustrating and time consuming when you don't know how to get around it.
In my experience, 9 times out of 10, using the menu_block resolves this, because it adds descriptive classes and allows enough options (like starting level, depth, etc) so that you get what you want the first time around and don't have to screw around with the theme functions.
This has been a pain point for themers for a while, and menu_block solves it, so I'm hoping it will be considered for core.
Comments
Comment #1
damien tournoud commentedI support this. menu_block is incredibly useful, but also incredibly inefficient. We can certainly do better in core.
Comment #2
quicksketchMenu theming output is terrible currently, I agree it's very difficult to override the output and it's definitely a place that needs improvement. I haven't looked at menu_block to know what functionality we can copy, but it's a good place to start.
Comment #3
eaton commentedWe'll need to take a closer look at menu_block's own code to see that it's up to snuff for core, but the underlying functionality -- pulling up chunks of the menu tree on demand, showing a certain number of children of the current page, etc -- is really, really useful.
Comment #4
johnalbinAs the author of menu_block, I agree with Damien. The backend code needs to be re-written.
@quicksketch, WHAT?!? You haven't looked at my module! ;-)
@eaton: the code is not up-to-snuff for core. It depends on D6 core's functions to grab the entire tree and then trims it down to what the admin user wanted. It needs to be re-written to grab only the sub-tree it needs.
@Jacine: Thanks for the support! :-)
Btw, this is a dupe of #474004: Add options to system menu block so primary and secondary menus can be blocks rather than variables
Comment #5
jacineoops, sorry for the dupe @JohnAlbin. I searched but didn't come up with that issue.