Magento 2 Extension to cleanup admin menu and Store > Configuration area by arranging third party extension items.

Overview

Clean Admin Menu - Magento 2 Extension

Latest Stable Version License: MIT Packagist Packagist

It will merge all 3rd party extension's menu items in backend's primary menu to a common menu item named "Extensions". It will also merge different 3rd party extension tabs under path

Store > Configuration

to a single tab named "Extensions" and place it after native Magento tabs.

Screenshots

Main Navigation

Primary Navigation

Extensions configuration

System Config

Comparision - admin before this extension and after

Before and after comparision

Installation

composer require redchamps/module-clean-admin-menu

Configuration

Various settings to tweak the extension behaviour are located under admin path

Store > Configuration > Extensions > RedChamps > Clean Admin Menu

Troubleshooting

If any extension menu item is not moved under "Extensions" menu then just find its menu id and enter it in setting

Store > Configuration > Extensions > RedChamps > Clean Admin Menu > Developer Tools > Move Menu ID's

Authors

  • RedChamps [Maintainer] Twitter Follow

  • Ravinder [Maintainer] Twitter Follow

  • Thomas Klein [Contributor] Twitter Follow

  • Prince Antil [Contributor] Twitter Follow

License

This project is licensed under the MIT License - see the LICENSE details.

ADS

Please visit our store for more free/paid extensions from us.

Comments
  • config import fails

    config import fails

    Hello,

    getting the following error upon config import:

    $ magento app:config:import
    Processing configurations data from configuration file...
    Import failed: Class RedChamps\CleanMenu\Model\Config\Backend\Modules does not exist
    

    The class RedChamps\CleanMenu\Model\Config\Backend\Modules really doesn't exist, but why does it ask for it?

    Any idea?

    opened by Morgy93 13
  • Code cleanup & optim

    Code cleanup & optim

    The intent of this PR is to fix many issues:

    • if the Amasty_Base is not installed, an error 500 is thrown on the backend because the menu removed is not declared previously
    • code quality by reduci'g LLOC and complexity
    • remove the advertising code which add extra loaded code and files and is not relevant regarding the module achievement goal (also seen in #19
    • support for Magento 2.4
    • remove code depreciation
    opened by thomas-kl1 7
  • Sub Menu feature

    Sub Menu feature

    Hi, I'm not a big fan of Amasty, but they make something nice to see to regroup menu.

    menu

    Actually for example with elastic suite menu, the subtitle are link to dashboard : menu2

    opened by kpitn 6
  • Compatibility with ElasticSuite

    Compatibility with ElasticSuite

    There seems to be a compatibility issue with ElasticSuite menu items.

    1. Please install https://github.com/Smile-SA/elasticsuite
    2. Go to Extensions > ElasticSuite > Search Engine > Search Relevance
    3. Menu item will redirect to dashboard with Invalid security or form key. Please refresh the page.
    4. The route is smile_elasticsuite/search_request_relevanceconfig/index/
    bug 
    opened by refueledinc 6
  • Can't uninstall this module. Help please.

    Can't uninstall this module. Help please.

    I need to uninstall this module. I've tried bin/magento module:uninstall --clear-static-content --remove-data as well as bin/magento module:disable RedChamps_CleanMenu followed by composer remove redchamps/module-clean-admin-menu. Both commands successfully execute and after running setup:upgrade and clearing cache, I'm left with the following error when I try to load any page on the website:

    1 exception(s): Exception #0 (Magento\Framework\Exception\FileSystemException): The contents from the "/var/www/html/vendor/redchamps/module-clean-admin-menu/etc/module.xml" file can't be read. Warning!file_get_contents(/var/www/html/vendor/redchamps/module-clean-admin-menu/etc/module.xml): failed to open stream: No such file or directory Exception #0 (Magento\Framework\Exception\FileSystemException): The contents from the "/var/www/html/vendor/redchamps/module-clean-admin-menu/etc/module.xml" file can't be read. Warning!file_get_contents(/var/www/html/vendor/redchamps/module-clean-admin-menu/etc/module.xml): failed to open stream: No such file or directory #1 Magento\Framework\Module\ModuleList\Loader->getModuleConfigs() called at [vendor/magento/framework/Module/ModuleList/Loader.php:83] #2 Magento\Framework\Module\ModuleList\Loader->load() called at [vendor/magento/framework/Module/ModuleList.php:72] #3 Magento\Framework\Module\ModuleList->getAll() called at [vendor/magento/framework/Module/ModuleList.php:91] #4 Magento\Framework\Module\ModuleList->getOne() called at [vendor/magento/framework/Module/DbVersionInfo.php:144] #5 Magento\Framework\Module\DbVersionInfo->isModuleVersionEqual() called at [vendor/magento/framework/Module/DbVersionInfo.php:59] #6 Magento\Framework\Module\DbVersionInfo->isSchemaUpToDate() called at [vendor/magento/framework/Module/DbVersionInfo.php:103] #7 Magento\Framework\Module\DbVersionInfo->getDbVersionErrors() called at [vendor/magento/framework/Module/Plugin/DbStatusValidator.php:119] #8 Magento\Framework\Module\Plugin\DbStatusValidator->getGroupedDbVersionErrors() called at [vendor/magento/framework/Module/Plugin/DbStatusValidator.php:53] #9 Magento\Framework\Module\Plugin\DbStatusValidator->beforeDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:121] #10 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/amasty/aminvisiblecaptcha/Plugin/Framework/App/FrontControllerInterface/ValidateCaptcha.php:118] #11 Amasty\InvisibleCaptcha\Plugin\Framework\App\FrontControllerInterface\ValidateCaptcha->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135] #12 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php:75] #13 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135] #14 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153] #15 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:23] #16 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:116] #17 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23] #18 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:264] #19 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:29]

    Please help me. I don't understand why Magento is still looking for this module.... I double checked the setup_module table, composer.json, and composer.lock files, and the module isn't mentioned anywhere in them.

    Thanks in advance.

    opened by momchilkutev 5
  • Exception #0 (Exception): Notice: Undefined index:  in vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35

    Exception #0 (Exception): Notice: Undefined index: in vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35

    Environment: Magento Open Source 2.3.5-p2 PHP 7.3.28 MAGE_MODE: developer

    Steps to reproduce:

    • install the extension via composer package manager
    • run the bin/magento setup:upgrade command
    • Open Magento Admin and observe the result

    Actual result:

    • An error occurred on the page Exception #0 (Exception): Notice: Undefined index: in vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35

    Expected result:

    • Magento Admin has been successfully loaded without errors.
    opened by mcspronko 5
  • Magento Marketplace settings

    Magento Marketplace settings

    This PR adds:

    Settings:

    • Enable/Disable Magento Marketplace menu item
    • Move Magento Marketplace menu item to "extensions"

    Code:

    • IsAllowedModule decorator to manage the Magento_Marketplace case
    • Add missing "canRestore" on allowed modules
    • Fix typo in virtual types
    • Add badges in README.md
    opened by thomas-kl1 5
  • Notice: Undefined index:  in vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35

    Notice: Undefined index: in vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35

    When I install the module using I get an exception. Using magento 2.3.7-p1

    composer require redchamps/module-clean-admin-menu
    bin/magento set:up
    

    Installed version is 1.1.3

    1 exception(s):
    Exception #0 (Exception): Notice: Undefined index:  in /data/a4h/magento2/vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35
    
    Exception #0 (Exception): Notice: Undefined index:  in /data/a4h/magento2/vendor/redchamps/module-clean-admin-menu/Model/RuleFactory.php on line 35
    <pre>#1 RedChamps\CleanMenu\Model\RuleFactory->create() called at [vendor/redchamps/module-clean-admin-menu/Model/IsAllowedStrategy.php:46]
    #2 RedChamps\CleanMenu\Model\IsAllowedStrategy->isAllowed() called at [vendor/redchamps/module-clean-admin-menu/Model/Config/Structure/Data.php:43]
    #3 RedChamps\CleanMenu\Model\Config\Structure\Data->get() called at [generated/code/RedChamps/CleanMenu/Model/Config/Structure/Data/Interceptor.php:24]
    #4 RedChamps\CleanMenu\Model\Config\Structure\Data\Interceptor->get() called at [vendor/magento/module-config/Model/Config/Structure.php:127]
    #5 Magento\Config\Model\Config\Structure->__construct() called at [generated/code/Magento/Config/Model/Config/Structure/Interceptor.php:14]
    #6 Magento\Config\Model\Config\Structure\Interceptor->__construct() called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:121]
    #7 Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject() called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:66]
    #8 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() called at [vendor/magento/framework/ObjectManager/ObjectManager.php:70]
    #9 Magento\Framework\ObjectManager\ObjectManager->get() called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:167]
    #10 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument() called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:273]
    #11 Magento\Framework\ObjectManager\Factory\AbstractFactory->getResolvedArgument() called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:236]
    #12 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime() called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34]
    #13 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments() called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59]
    #14 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() called at [vendor/magento/framework/ObjectManager/ObjectManager.php:56]
    #15 Magento\Framework\ObjectManager\ObjectManager->create() called at [vendor/magento/framework/App/ActionFactory.php:44]
    #16 Magento\Framework\App\ActionFactory->create() called at [vendor/magento/framework/App/Router/Base.php:306]
    #17 Magento\Framework\App\Router\Base->matchAction() called at [vendor/magento/framework/App/Router/Base.php:167]
    #18 Magento\Framework\App\Router\Base->match() called at [vendor/magento/framework/App/FrontController.php:115]
    #19 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #20 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #21 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #22 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
    #23 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:116]
    #24 Magento\Framework\App\Http->launch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #25 Magento\Framework\App\Http\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #26 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/msp/adminrestriction/Plugin/AppInterfacePlugin.php:134]
    #27 MSP\AdminRestriction\Plugin\AppInterfacePlugin->aroundLaunch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #28 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/justbetter/magento2-sentry/Plugin/GlobalExceptionCatcher.php:43]
    #29 JustBetter\Sentry\Plugin\GlobalExceptionCatcher->aroundLaunch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #30 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #31 Magento\Framework\App\Http\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:26]
    #32 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:261]
    #33 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:40]
    </pre>
    
    opened by AndrewRMillar 4
  • get rid of

    get rid of "version" in composer.json

    As we are using VCS for this package and tags, the "version" argument is not needed in the composer.json. Removing it will be make easier to ship new releases without having to bump the version in composer.json each time.

    feedback 
    opened by thomas-kl1 4
  • Add a rule to define the behavior of the selected items in the settings

    Add a rule to define the behavior of the selected items in the settings

    This PR add the "rule" field in the configuration. The rule will impact the ways the selected items are used in the isAllowed method. Now you can define if the all items are allowed by default, and you select the items you want to denied. Or vice versa and only allowing the selected items. This setting is added for both tabs and menu.

    opened by thomas-kl1 4
  • Notice: Undefined index

    Notice: Undefined index

    Installed module on M2.3.3 via composer, went to admin and received error in admin. s:up, c:c, c:f did not resolve the issue

    1 exception(s):
    Exception #0 (Exception): Notice: Undefined index: module in vendor/redchamps/module-clean-admin-menu/Plugin/Model/MenuBuilderCommand.php on line 11
    
    Exception #0 (Exception): Notice: Undefined index: module in vendor/redchamps/module-clean-admin-menu/Plugin/Model/MenuBuilderCommand.php on line 11
    <pre>#1 RedChamps\CleanMenu\Plugin\Model\MenuBuilderCommand->afterExecute() called at [vendor/magento/framework/Interception/Interceptor.php:146]
    #2 Magento\Backend\Model\Menu\Builder\Command\Remove\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #3 Magento\Backend\Model\Menu\Builder\Command\Remove\Interceptor->___callPlugins() called at [generated/code/Magento/Backend/Model/Menu/Builder/Command/Remove/Interceptor.php:52]
    #4 Magento\Backend\Model\Menu\Builder\Command\Remove\Interceptor->execute() called at [vendor/magento/module-backend/Model/Menu/Builder.php:65]
    #5 Magento\Backend\Model\Menu\Builder->getResult() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #6 Magento\Backend\Model\Menu\Builder\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #7 Magento\Backend\Model\Menu\Builder\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #8 Magento\Backend\Model\Menu\Builder\Interceptor->___callPlugins() called at [generated/code/Magento/Backend/Model/Menu/Builder/Interceptor.php:39]
    #9 Magento\Backend\Model\Menu\Builder\Interceptor->getResult() called at [vendor/magento/module-backend/Model/Menu/Config.php:148]
    #10 Magento\Backend\Model\Menu\Config->_initMenu() called at [vendor/magento/module-backend/Model/Menu/Config.php:111]
    #11 Magento\Backend\Model\Menu\Config->getMenu() called at [vendor/magento/module-backend/Block/Menu.php:265]
    #12 Magento\Backend\Block\Menu->getMenuModel() called at [generated/code/Magento/Backend/Block/Menu/Interceptor.php:50]
    #13 Magento\Backend\Block\Menu\Interceptor->getMenuModel() called at [vendor/magento/module-backend/Model/View/Result/Page.php:28]
    #14 Magento\Backend\Model\View\Result\Page->setActiveMenu() called at [generated/code/Magento/Backend/Model/View/Result/Page/Interceptor.php:24]
    #15 Magento\Backend\Model\View\Result\Page\Interceptor->setActiveMenu() called at [vendor/magento/module-catalog/Controller/Adminhtml/Product/Edit.php:71]
    #16 Magento\Catalog\Controller\Adminhtml\Product\Edit->execute() called at [generated/code/Magento/Catalog/Controller/Adminhtml/Product/Edit/Interceptor.php:24]
    #17 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:108]
    #18 Magento\Framework\App\Action\Action->dispatch() called at [vendor/magento/module-backend/App/AbstractAction.php:231]
    #19 Magento\Backend\App\AbstractAction->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #20 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #21 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:143]
    #22 Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #23 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #24 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->___callPlugins() called at [generated/code/Magento/Catalog/Controller/Adminhtml/Product/Edit/Interceptor.php:39]
    #25 Magento\Catalog\Controller\Adminhtml\Product\Edit\Interceptor->dispatch() called at [vendor/magento/framework/App/FrontController.php:159]
    #26 Magento\Framework\App\FrontController->processRequest() called at [vendor/magento/framework/App/FrontController.php:99]
    #27 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #28 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #29 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #30 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
    #31 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:137]
    #32 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
    #33 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:261]
    #34 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:40]
    </pre>
    
    bug 
    opened by refueledinc 4
  • 2.4.4 (PHP 8.1) compatibility

    2.4.4 (PHP 8.1) compatibility

    Extension will produce below error in the 2.4.4 (PHP 8.1) admin panel

    Error: Call to undefined method ReflectionUnionType::getName() in /m2/244/vendor/magento/framework/Code/Generator/EntityAbstract.php:335

    This is being caused by Magento 2.4.4 core issue reported here https://github.com/magento/magento2/issues/35292 and we are looking for some temporary fix till the time the core issue gets resolved.

    opened by rav-redchamps 3
For the super admin, replace WP Admin Bar My Sites menu with an All Sites menu.

Super Admin All Sites Menu Also available at https://wordpress.org/plugins/super-admin-all-sites-menu/ Use | Prerequisite | Install | Filters | Demo |

Per Søderlind 18 Dec 17, 2022
Pat eu cookies law - 🌝 EU Cookie Law Compliance: A Textpattern plugin (or standalone script) for Third-Party Cookies (RGPD compliance)

pat_eu_cookies_law EU Cookie Law Compliance: A Textpattern plugin (or a standalone script) for Third-Party Cookies. A simple solution that respects th

Patrick LEFEVRE 3 Aug 16, 2020
An all-in-one package with the minimum third-party requirements to get started as quickly as possible with Pokemod Atlas

Pokemod Atlas All-In-One An all-in-one package with the minimum third-party requirements to get started as quickly as possible with Pokemod Atlas. ❤️

Pokemod 12 Oct 10, 2022
An open-source Laravel 8 online store, client area, and billing software specially made for Pterodactyl panel

PteroBilling An open-source Laravel 8 online store, client area, and billing software specially made for Pterodactyl panel           Announcement: An

PteroBilling 18 Nov 12, 2022
StickWithIt is an online food ordering website created using PHP. You can view and purchase various items as well as remove items from the cart.

StickWithIt (App Name) StickWithIt is an online food ordering website created using PHP. The database used here is MYSQL database. The tool used here

Jenil Gajjar 1 May 11, 2022
This is a plugin for pocketmine-mp, when locking a player's items helps players not to lose items or throw things around causing server lag.

[] LockedItem| v1.0.0 Player's item lock Features Player's item lock Players aren't afraid of losing items For Devolopers You can access to LockedItem

JeroGamingYT 3 Jan 4, 2022
Simply removes the applcation's front-end and redirects it to the admin area.

Simply removes the application's front-end and redirects it to the admin area.

Albright Labs 1 Mar 28, 2022
Description: A simple plugin that sets the current admin page to always be at the top of the admin menu.

=== Sticky Admin Menu === Contributors: sc0ttkclark Donate link: https://www.scottkclark.com/ Tags: admin menu, sticky Requires at least: 4.4 Tested u

Scott Kingsley Clark 2 Sep 29, 2022
A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2

Simple Import / Export tool A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2. Table data

EcomDev B.V. 51 Dec 5, 2022
Magento 2 module to quickly acces products, orders and customer from admin menu

Magento 2 module to quickly access product, order or customer views Introduction The Magento 2 backend can be sluggish. Ever wanted to access a produc

null 1 Dec 3, 2021
A first party module to integrate Elastic App Search in Magento 2.

A first-party Magento integration for building excellent, relevant search experiences with Elastic App Search. ⚠️ This is a beta version of the client

elastic 25 Apr 22, 2022
Magento 2 Preview/Visit Catalog allows the store owner to quickly preview the catalog (product & category) pages from the admin panel.

Magento 2 Preview/Visit Catalog Overview Magento 2 Preview/Visit Catalog allows the store owner to quickly preview the catalog (product & category) pa

Raj KB 4 Sep 27, 2022
Get mobile app version and other related data from Google Play Store, Apple App Store and Huawei AppGallery

Mobile App Version Get mobile app version and other related data from Google Play Store, Apple App Store and Huawei AppGallery. Installation Add to co

Omer Salaj 11 Mar 15, 2022
Magento 2 Blog is an extension that allows you to manage your store and blog

Magento 2 Blog Extension by Magefan Magento 2 Blog is an extension that allows you to manage your store and blog from one place without having to rely

Magefan 243 Dec 21, 2022
MOFHY Lite is a priceless MyOwnFreeHost Client Area for account management, ticket support system and a free ssl service

MOFHY Lite is a priceless MyOwnFreeHost Client Area for account management, ticket support system and a free ssl service. It has easy to use features much like the WHMCS Digit UI interface.

MOFHY Developers 1 Oct 21, 2022