PHPackages                             scandipwa/menu-organizer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. scandipwa/menu-organizer

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

scandipwa/menu-organizer
========================

Scandiweb Menu Organizer for ScandiPWA

2.1.5(4y ago)13230.5k—5%19[1 issues](https://github.com/scandipwa/menu-organizer/issues)[3 PRs](https://github.com/scandipwa/menu-organizer/pulls)2OSL-3.0PHP

Since Mar 8Pushed 1y ago5 watchersCompare

[ Source](https://github.com/scandipwa/menu-organizer)[ Packagist](https://packagist.org/packages/scandipwa/menu-organizer)[ RSS](/packages/scandipwa-menu-organizer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (9)Versions (23)Used By (2)

ScandiPWA\_MenuOrganizer
========================

[](#scandipwa_menuorganizer)

This repository is a module for Magento 2. This module is used to create customized navigation.

Menu
----

[](#menu)

1. [Supported features](#supported)
2. [Installation](#install)
3. [How to use](#how-to)
    3.1. [Creating first menu](#form-menu)
    3.2. [Adding menu items](#form-item)
    3.3. [Structure for ScandiPWA](#render)
    3.4. [How to enable/disable menu per store](#per-store)
4. [For development](#dev)
    4.1. [DB structure](#dev-db)
    4.2. [GraphQl structure](#dev-graphql)
    4.3. [Quick file access](#dev-quick)

---

1. Supported features
---------------------

[](#1-supported-features)

- Multilevel structured menu
- Magento categories
- Magento CMS pages
- Custom URLs
- Icons for menu items
- Custom CSS classes

---

2. Installation
---------------

[](#2-installation)

Installation via composer:

```
composer require scandipwa/menu-organizer

```

---

3. How to use
-------------

[](#3-how-to-use)

### 3.1. Creating first menu

[](#31-creating-first-menu)

1. Open admin panel
2. Locate `admin/scandipwa_menuorganizer/menu` via URL or by using side panel menu: `Scandiweb -> Navigation -> MenuManager`
3. Find `Add New Menu` button in the right top corner, click it.
4. Fill out form fields:
    1. Required:
        - *Title*
        - *Menu identifier (used in graphql requests)*
        - *Menu status (enabled / disabled)*
    2. Optional:
        - *Custom Menu CSS Class*
        - *Store (to which store-view this menu is assigned to)*
5. Click `Save`.

[![image](https://user-images.githubusercontent.com/82165392/128774925-e1c39338-84ed-4add-9140-13fe647b6692.png)](https://user-images.githubusercontent.com/82165392/128774925-e1c39338-84ed-4add-9140-13fe647b6692.png)

### 3.2. Adding menu items

[](#32-adding-menu-items)

1. Open menu.
2. Find the `Assigned Menu Items` in the navigation on the left. click it.
3. Click `Add item` in the top right corner.
4. Fill out form fields:
    1. 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)*
    2. Optional:
        - Menu Item CSS Class
        - URL Attributes
        - Icon
        - Icon Alt Text
        - Menu Item Sort Order *(Item with lowest number will be on top)*
5. Click `Save`.

[![image](https://user-images.githubusercontent.com/82165392/128774951-2a3be10e-9930-4b8e-8e11-c9e02e0b40b3.png)](https://user-images.githubusercontent.com/82165392/128774951-2a3be10e-9930-4b8e-8e11-c9e02e0b40b3.png)

### 3.3. Structure for ScandiPWA

[](#33-structure-for-scandipwa)

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

[![image](https://user-images.githubusercontent.com/82165392/128774980-d1e07103-fc64-4398-a2d3-1912bb6e11e9.png)](https://user-images.githubusercontent.com/82165392/128774980-d1e07103-fc64-4398-a2d3-1912bb6e11e9.png)

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).

[![image](https://user-images.githubusercontent.com/82165392/128775983-575bacfa-bbf7-4506-8734-37c635fa3ea1.png)](https://user-images.githubusercontent.com/82165392/128775983-575bacfa-bbf7-4506-8734-37c635fa3ea1.png)

### 3.4. How to enable/disable menu per store

[](#34-how-to-enabledisable-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.](#step)
 Then, select the correct menu id in the configuration:

1. Open admin panel
2. Using the side panel menu, go to: `Stores -> Settings -> Configuration`
3. Find `Scope` and select the desired store view.
4. Using the menu dropdown, go to: `ScandiPWA -> Content Customization -> Header and Menu`
5. Uncheck the checkbox `Use Website`
6. Select the desired menu in `Menu to display`
7. Tap `Save Config`
8. Flush Cache Storage

[![image](https://user-images.githubusercontent.com/82165392/128777137-05d918b2-94cf-403b-9898-e8ad65ccd588.png)](https://user-images.githubusercontent.com/82165392/128777137-05d918b2-94cf-403b-9898-e8ad65ccd588.png)

---

4. For development
------------------

[](#4-for-development)

### 4.1. DB structure

[](#41-db-structure)

[![image](https://user-images.githubusercontent.com/82165392/128775005-35875db3-9b87-4077-a4fc-3855c15ca5b5.png)](https://user-images.githubusercontent.com/82165392/128775005-35875db3-9b87-4077-a4fc-3855c15ca5b5.png)

### 4.2. GraphQl structure

[](#42-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](./src/etc/schema.graphqls)

### 4.3. Quick file access:

[](#43-quick-file-access)

- Form for creating menu: [General.php](./src/Block/Adminhtml/Menu/Edit/Tab/General.php)
- Form for creating item: [Form.php](./src/Block/Adminhtml/Item/Edit/Form.php)
- Menu model: [Item.php](./src/Model/Menu.php) | [ResourceModel/Item.php](./src/Model/ResourceModel/Menu.php)
- Item model: [Menu.php](./src/Model/Item.php) | [ResourceModel/Item.php](./src/Model/ResourceModel/Item.php)
- Menu resolver: [Menu.php](./src/Model/Resolver/Menu.php)
- DB schema: [db\_schema.xml](./src/Model/Resolver/Menu.php)

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity44

Moderate usage in the ecosystem

Community28

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~44 days

Recently: every ~53 days

Total

22

Last Release

1685d ago

Major Versions

1.1.10 → 2.0.02020-06-26

### Community

Maintainers

![](https://www.gravatar.com/avatar/0c2cd642b3c520df20394344ee587782e246262899e7ddc99a191360e85d7fdc?d=identicon)[scandiweb](/maintainers/scandiweb)

---

Top Contributors

[![alfredsgenkins](https://avatars.githubusercontent.com/u/29531824?v=4)](https://github.com/alfredsgenkins "alfredsgenkins (23 commits)")[![mihailspopovs4](https://avatars.githubusercontent.com/u/54805724?v=4)](https://github.com/mihailspopovs4 "mihailspopovs4 (9 commits)")[![carinadues](https://avatars.githubusercontent.com/u/82165392?v=4)](https://github.com/carinadues "carinadues (6 commits)")[![AleksandrsKondratjevs](https://avatars.githubusercontent.com/u/68007919?v=4)](https://github.com/AleksandrsKondratjevs "AleksandrsKondratjevs (3 commits)")[![riha112](https://avatars.githubusercontent.com/u/25338213?v=4)](https://github.com/riha112 "riha112 (3 commits)")[![dfelton](https://avatars.githubusercontent.com/u/2659558?v=4)](https://github.com/dfelton "dfelton (3 commits)")[![ybutrameev](https://avatars.githubusercontent.com/u/38831994?v=4)](https://github.com/ybutrameev "ybutrameev (2 commits)")[![denisprotassoff](https://avatars.githubusercontent.com/u/104761905?v=4)](https://github.com/denisprotassoff "denisprotassoff (2 commits)")[![ainarssondors](https://avatars.githubusercontent.com/u/48548028?v=4)](https://github.com/ainarssondors "ainarssondors (1 commits)")[![zans-laksa](https://avatars.githubusercontent.com/u/73945186?v=4)](https://github.com/zans-laksa "zans-laksa (1 commits)")[![Andrii-Antoniuk](https://avatars.githubusercontent.com/u/104421198?v=4)](https://github.com/Andrii-Antoniuk "Andrii-Antoniuk (1 commits)")[![atravkovs](https://avatars.githubusercontent.com/u/12703177?v=4)](https://github.com/atravkovs "atravkovs (1 commits)")[![edgars1337](https://avatars.githubusercontent.com/u/53514184?v=4)](https://github.com/edgars1337 "edgars1337 (1 commits)")[![ErnestsVerins](https://avatars.githubusercontent.com/u/57095300?v=4)](https://github.com/ErnestsVerins "ErnestsVerins (1 commits)")[![pysebb](https://avatars.githubusercontent.com/u/2539735?v=4)](https://github.com/pysebb "pysebb (1 commits)")[![rut4](https://avatars.githubusercontent.com/u/2667321?v=4)](https://github.com/rut4 "rut4 (1 commits)")[![winniepukki](https://avatars.githubusercontent.com/u/43637240?v=4)](https://github.com/winniepukki "winniepukki (1 commits)")

### Embed Badge

![Health badge](/badges/scandipwa-menu-organizer/health.svg)

```
[![Health](https://phpackages.com/badges/scandipwa-menu-organizer/health.svg)](https://phpackages.com/packages/scandipwa-menu-organizer)
```

###  Alternatives

[smile/elasticsuite

Magento 2 merchandising and search engine built on ElasticSearch

8044.5M33](/packages/smile-elasticsuite)[mollie/magento2

Mollie Payment Module for Magento 2

1121.6M10](/packages/mollie-magento2)[snowdog/module-menu

Provides powerful menu editor to replace category based menus in Magento 2

3271.7M5](/packages/snowdog-module-menu)[baldwin/magento2-module-url-data-integrity-checker

Magento 2 module which can find potential url related problems in your catalog data

281773.3k](/packages/baldwin-magento2-module-url-data-integrity-checker)[dotdigital/dotdigital-magento2-extension

Dotdigital for Magento 2

50374.2k18](/packages/dotdigital-dotdigital-magento2-extension)[swissup/module-search-mysql-legacy

Legacy mysql search for magento 2.4

10483.0k](/packages/swissup-module-search-mysql-legacy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
