magiccart / magicmenu
Make megamenu, dropdown menu, mobile menu easy all in one.
Package info
github.com/magepow/magento-2-mega-menu
Type:magento2-module
pkg:composer/magiccart/magicmenu
Requires
- magepow/core: ^1.1.2
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Magento 2 Mega Menu
Welcome to Magepow Magento 2 Mega Menu! Our free module helps you create a user-friendly navigation experience and improve the usability of your online store.
For merchants who need professional assistance and reliable ongoing support, we recommend purchasing the module from Magepow. Our support service helps you get the most out of the module, resolve technical issues, and ensure a smoother experience when integrating it into your Magento store.
Magento 2 Mega menu extension is an indispensable component, and plays the role of website navigation to help customers easily categorize and find information. Without a menu, visitors to the page will have to spend time searching for each content on your website, thereby making them find it difficult, difficult to access and do not know what your website has main content. This will increase the user's bounce rate, thereby reducing the SEO quality of the website.
Mega menu, dropdown menu and mobile menu for Magento 2 / Adobe Commerce.
The module replaces the default store.menu block with a configurable navigation that supports
mega menu layouts, plain dropdown menus, an extra (custom) menu and a sidebar accordion menu.
Get started
Installation
composer require magiccart/magicmenu bin/magento setup:upgrade bin/magento setup:static-content:deploy -f bin/magento cache:flush
Manual installation: copy the module to app/code/Magiccart/Magicmenu and run the commands above
without the composer require line.
Need Professional Support?
Magepow Magento 2 Mega Menu is free and open-source, allowing you to build intuitive and user-friendly navigation for your Magento store.
If you need professional technical assistance, help with configuration, troubleshooting, or ongoing support, you can purchase the module with our support service directly from the Magepow website.
Get professional support and make the most of your Magento 2 Mega Menu.
👉 Purchase Mega Menu Pro with Support
Highlight features
1. Mega menu, dropdown menu or both
Mega menu
The mega menu saves horizontal space and gives every top category its own panel made of CMS static blocks placed on the top, left, right and bottom of the category list.
Dropdown menu
A dropdown menu shows the sub categories on hover or on click. It fits catalogs with many categories and keeps the navigation compact.
2. Extra menu
Magiccart > Magic Menu > Extra Menu adds standalone entries to the navigation. Each entry shows a
link, a CMS static block, or both.
3. Responsive and mobile menu
The menu adapts to the screen: the desktop navigation is replaced by a mobile menu below the breakpoint defined in the configuration. The sticky option keeps the menu visible while scrolling.
4. Category label, image and thumbnail
Each category can show a label, a thumbnail and an image inside the mega menu. The values are set
in Catalog > Manage Categories and are stored as the magic_label, magic_thumbnail and
magic_image category attributes.
Configuration
Stores > Configuration > Magiccart > Magic Menu
| Group | Description |
|---|---|
| General | Categories that are rendered as a simple dropdown instead of a mega menu. |
| Top Menu | Horizontal menu: enable/disable, home button, multi store demo switcher, sticky menu, screen breakpoint, event (hover/click), full width mode, excluded categories. |
| Vertical Menu | Same options as the top menu for the vertical navigation. |
| Accordion | Enable the accordion menu rendered in the sidebar on category pages. |
Category configuration
Catalog > Categories > <category>
Label– comma separated list of labels rendered next to the category name.Thumbnail/Image– uploaded topub/media/magiccart/magicmenu/thumbnail/<id>.pngandpub/media/magiccart/magicmenu/images/<id>.png.
Mega menu / extra menu configuration
Magiccart > Magic Menu > Menu binds a top category to a layout made of CMS static blocks
(top, left, right, bottom) with configurable proportions.
Magiccart > Magic Menu > Extra Menu adds a standalone entry to the navigation. It renders either
a link or a CMS static block.
The values stored in the top, left, right, bottom and ext_content fields are CMS block
identifiers, not block IDs.
Proportions of the mega menu
The width of the mega menu is shared between the category list, the left block and the right block. The three proportion fields are weights: the total of the weights is used to calculate the width of every part.
| Proportion | Meaning |
|---|---|
| Proportion: Category | Weight of the category list. |
| Proportion: Block Left | Weight of the block displayed on the left. |
| Proportion: Block Right | Weight of the block displayed on the right. |
Example: Proportion: Category = 2, Proportion: Block Left = 1 and Proportion: Block Right = 0
give 67% of the width to the categories and 33% to the left block.
Extension points
| Type | Name |
|---|---|
| Service contract | Magiccart\Magicmenu\Api\MagicmenuRepositoryInterface |
| Data contract | Magiccart\Magicmenu\Api\Data\MagicmenuInterface |
| Search results | Magiccart\Magicmenu\Api\Data\MagicmenuSearchResultsInterface |
| Frontend block | Magiccart\Magicmenu\Block\Menu |
| Configuration reader | Magiccart\Magicmenu\Model\Config |
Use the repository instead of loading or saving the model directly:
$menu = $this->magicmenuRepository->getById($id); $menu->setName('New name'); $this->magicmenuRepository->save($menu);
Upgrade notes (2.0.0)
- The module moved from
setup_version/InstallSchema/InstallDatato declarative schema (etc/db_schema.xml) and a data patch (Setup/Patch/Data/AddCategoryMagicAttributes.php). The patch is idempotent: existing category attributes are not recreated. - The CMS static blocks are now resolved by identifier (
Magento\Cms\Block\BlockByIdentifier) instead of the deprecatedMagento\Cms\Block\Block. Magiccart\Magicmenu\Helper\Datais deprecated, useMagiccart\Magicmenu\Model\Configinstead.- The
Registrybased transfer of the edited entity between controller and form block was removed. - The
exclude_html_desktopandexclude_html_mobilesettings were removed, the attributes they rendered were never read by the JavaScript.
Development
vendor/bin/phpcs --standard=Magento2 --severity=10 app/code/Magiccart/Magicmenu vendor/bin/phpcs --standard=Magento2 --extensions=php,phtml app/code/Magiccart/Magicmenu vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magiccart/Magicmenu/Test/Unit
License
OSL-3.0 / AFL-3.0. See LICENSE.
Donation
If this project help you reduce time to develop, you can give me a cup of coffee :)



