There seems to be lots of solutions to megamenu in drupal. But I haven't found one with similar approach like mine. To confirm myself that I don't reinvent the wheel, like some other module developer, I searched the d.o. first. Drupal is known with there is a module for that. Unfortunately after several pages of searching, I found no similar effort. I asked in the forum if any similar approach is available for just in case I missed the obvious, but unfortunately no clue so far. I tried one or two modules, and found none that is similar in the approach. I read some other from their module project description, and yet I can not find the similar approach.
So I go ahead with the initial release a few weeks ago for feedback, improvements and wider testings. I have done what I can to avoid possible dups. Any objection for possible duplication should be raised in the project issue.
Ultimenu is the UltimatelyDeadSimple™ megamenu ever with dynamic region creation.
How would I come up with such a silly sound-like-bluffing name? I was building it with the name Ubermenu in the first place, but soon it felt like Ubercart sub-module. When I realized what the module does is actually an absolutely simple toggle of block and region of megamenu, I thought I have the right to name it Ultimenu, whatever. So be it. If you have objection with the name, I am afraid I can not help you with that. It just has to have a whatever name for the release.
An Ultimenu block is based on a menu.
Ultimenu regions are based on the menu items.
The result is a block contains regions containing blocks, as opposed to: a region contains blocks.
The module manages the toggle of Ultimenu blocks, regions, and a skins library, while leaving the management of block, menu and regions to Drupal.
At individual Ultimenu block, you can define a unique skin and the flyout orientation.
You don't have to write regions in the theme .info, however you can always permanently store resulting region definitions in it. See Notes below for possible handle of confusion.
- Multiple instance of Ultimenus based on system and menu modules.
- Dynamic regions based on menu items which is toggled without touching .info.
- Render menu description.
- Menu description above menu title.
- Add title class to menu item list.
- Add mlid class to menu item list.
- Add menu counter class
- Remove browser tooltip.
- Use mlid, not title for Ultimenu region key.
- Custom skins, or theme default "css/ultimenu" directory for auto discovery.
- Individual flyout orientation: horizontal to bottom or top, vertical to left or right.
- Pure CSS3 animation and basic styling is provided without assumption. Please see and override the ultimenu.css for more elaborate positioning, either left, centered or right to menu list or menu bar. And a simple JS to highlight the current menu item after hover (.hover) whenever CSS (:hover) fails.
- With the goodness of blocks and regions, you can embed almost anything: views, panels, blocks, menu_block, boxes, slideshow..., except a toothpick.
All 1-9 is off by default.
- Enable or install the module.
- Visit admin/structure/ultimenu to manage the Ultimenu blocks, regions, a skin library and a few goodies.
- Once a menu is enabled, dynamic regions will be available to toggle. Only enabled regions (based on enabled menu items) will be visible at block/ context admin.
- Visit admin/structure/block to assign the "Ultimenu: Menu name" block into header, sidebar, footer or navigation region, except Ultimenu regions.
- Add other blocks to the Ultimenu regions.
- Drupal core optional menu.module should be enabled.
- OM Maximenu
- Menu Views
- Giga Menu
- Menu Minipanels
- Mega Dropdown
- Menu Attach Block
Whenever a menu item is removed/disabled, the relevant region will be removed.
If you manually copy/store them in theme .info, regions will always be visible, which is another case.
Dynamic region is indeed removed, but system now displays your written regions. However you can force disabling unwanted Ultimenu regions via UI if so required, altering the system.
Make sure to clear the cache to see the new regions.