scandipwa / menu-organizer
scandipwa/menu-organizer
Scandiweb Menu Organizer for ScandiPWA
ScandiPWA_MenuOrganizer
This repository is a module for Magento 2. This module is used to create customized navigation.
Menu
- Supported features
- Installation
- How to use
3.1. Creating first menu
3.2. Adding menu items
3.3. Structure for ScandiPWA
3.4. How to enable/disable menu per store - For development
4.1. DB structure
4.2. GraphQl structure
4.3. Quick file access
1. Supported features
- Multilevel structured menu
- Magento categories
- Magento CMS pages
- Custom URLs
- Icons for menu items
- Custom CSS classes
2. Installation
Installation via composer:
composer require scandipwa/menu-organizer
3. How to use
3.1. Creating first menu
- Open admin panel
- Locate
admin/scandipwa_menuorganizer/menuvia URL or by using side panel menu:Scandiweb -> Navigation -> MenuManager - Find
Add New Menubutton in the right top corner, click it. - Fill out form fields:
- Required:
- Title
- Menu identifier (used in graphql requests)
- Menu status (enabled / disabled)
- Optional:
- Custom Menu CSS Class
- Store (to which store-view this menu is assigned to)
- Required:
- Click
Save.

3.2. Adding menu items
- Open menu.
- Find the
Assigned Menu Itemsin the navigation on the left. click it. - Click
Add itemin the top right corner. - Fill out form fields:
- Required:
- Menu Item Title
- URL Type (Custom URL / Category / CMS page)
- URL Type specific field: Custom URL | Category | CMS Page
- Parent (Parent menu item)
- Menu Item Status (enabled / disabled)
- Optional:
- Menu Item CSS Class
- URL Attributes
- Icon
- Icon Alt Text
- Menu Item Sort Order (Item with lowest number will be on top)
- Required:
- Click
Save.

3.3. Structure for ScandiPWA
By default ScandiPWA will only render yellow elements (check image) and ignore the red ones.

The example below would result in a menu with the options Women, Men and Accessories and their respective sub-items (such as Bags and Tops).

3.4. How to enable/disable menu per store
To enable a menu for a specific store, make sure you have selected the store in the menu configuration on step 3.1.4.ii.
Then, select the correct menu id in the configuration:
- Open admin panel
- Using the side panel menu, go to:
Stores -> Settings -> Configuration - Find
Scopeand select the desired store view. - Using the menu dropdown, go to:
ScandiPWA -> Content Customization -> Header and Menu - Uncheck the checkbox
Use Website - Select the desired menu in
Menu to display - Tap
Save Config - Flush Cache Storage

4. For development
4.1. DB structure

4.2. GraphQl structure
type Query {
scandiwebMenu(identifier: String!): Menu @resolver(class: "ScandiPWA\\MenuOrganizer\\Model\\Resolver\\Menu")
}
type Menu {
menu_id: ID
title: String
is_active: Boolean
css_class: String
items: [Item]
}
type Item {
item_id: ID
icon: String
title: String
item_class: String @doc(description: "CSS class of the item")
parent_id: Int
url: String
url_type: Int @doc(description: "0 - regular link, 1 - cms page, 2 - category")
position: Int
is_active: Boolean
cms_page_identifier: String
is_promo: Int @doc(description: "Boolean if category is promotional category")
promo_image: String @doc(description: "Promo category image background")
category_id: Int @doc(description: "Category id")
}
Or check: schema.graphqls
4.3. Quick file access:
- Form for creating menu: General.php
- Form for creating item: Form.php
- Menu model: Item.php | ResourceModel/Item.php
- Item model: Menu.php | ResourceModel/Item.php
- Menu resolver: Menu.php
- DB schema: db_schema.xml
Scandiweb_Menumanager changelog
0.1.0:
- added install schema for menu / menu items / menu-store mapping
- added CRUD functionality for menus
- added menu mass actions
- added menus functionality to be based on 'store' level
- added CRUD functionality for menu items
- added custom output for categories/menus as dropdown options
| Version | Stability | QA Status | Released |
|---|---|---|---|
| 2.1.5 | stable | Fail | 2021-10-06 22:27:36 |
| 2.1.4 | stable | Not tested | 2021-07-28 12:30:08 |
| 2.1.3 | stable | Not tested | 2021-07-19 16:46:05 |
| 2.1.2 | stable | Not tested | 2021-07-13 21:21:43 |
| 2.1.1 | stable | Not tested | 2021-03-05 07:04:58 |
| 2.1.0 | stable | Not tested | 2020-09-07 11:00:33 |
| 2.0.0 | stable | Not tested | 2020-06-26 09:19:23 |
| 1.1.10 | stable | Not tested | 2020-06-18 09:16:36 |
| 1.1.9 | stable | Not tested | 2020-06-15 13:38:02 |
| 1.1.8 | stable | Not tested | 2020-05-25 15:26:37 |
| 1.1.7 | stable | Not tested | 2020-05-12 08:46:29 |
| 1.1.6 | stable | Not tested | 2020-05-08 15:04:21 |
| 1.1.5 | stable | Not tested | 2020-05-07 11:03:12 |
| 1.1.4 | stable | Not tested | 2019-12-18 12:48:35 |
| 1.1.3 | stable | Not tested | 2019-12-09 15:13:59 |
| 1.1.2 | stable | Not tested | 2019-09-30 12:13:39 |
| 1.1.1 | stable | Not tested | 2019-09-09 13:23:47 |
| 1.1.0 | stable | Not tested | 2019-09-09 13:20:52 |
| 1.0.3 | stable | Not tested | 2019-06-04 14:12:43 |
| 1.0.2 | stable | Not tested | 2019-04-25 13:52:43 |
| 1.0.1 | stable | Not tested | 2019-03-08 15:33:49 |
| 1.0.0 | stable | Not tested | 2019-03-08 15:00:10 |
Requires 9
| Package | Constraint |
|---|---|
| magento/framework | * |
| magento/module-cms | * |
| magento/module-store | * |
| magento/module-catalog | * |
| magento/module-backend | * |
| magento/module-captcha | * |
| magento/module-media-storage | * |
| magento/module-ui | * |
| scandiweb/module-core | ~0.1.2 |
| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Pass | 0 | |
| PHPStan | Fail | 80 | 80 errors (level 4, ruleset: phpstan + bitexpert/phpstan-magento) |
| Cpd | Pass | 0 | |
| Security | Pass | 0 |
Turn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.