14

Using the Magento Ecommerce system, is is possible to remove an item from the Admin Panel Navigation menu? More generally, is there a way to use the config override system to remove existing elements from a configuration?

I know I can add to the navigation with an override that looks something like this

<?xml version="1.0"?>
<config>
    <modules>
        <Company_Module>
            <version>
                0.1.0
            </version>
        </Company_Module>
    </modules>

    <adminhtml>
        <menu>
             <cms translate="title" module="cms">
                <title>The CMS</title>
                <sort_order>70</sort_order>
                <children>
                    <foo translate="title" module="cms">
                        <title>Foo Item</title>
                        <action>adminhtml/foo</action>
                    </foo>
                </children>
             </cms>
        </menu>    
    </adminhtml>
</config>

but how would/could I completely suppress the CMS navigation item?

Alana Storm
  • 164,128
  • 91
  • 395
  • 599

4 Answers4

14

Cleaner way to do this:

Add a adminhtml.xml (e.g. to an existing modules that keeps all other customization stuff, or create a new module)

<?xml version="1.0" ?>
<config>
    <menu>
        <xmlconnect>
            <disabled>1</disabled>
        </xmlconnect>
    </menu>
</config>
fbrnc
  • 531
  • 4
  • 5
  • This is definitely the way to handle things in a modern version of Magento. I'm not sure if it's supported in older version, but if you're having trouble see the old, original accepted answer: http://stackoverflow.com/a/769931/4668 – Alana Storm Nov 15 '12 at 16:51
11

You could inject a bogus module dependency into the menu item in your config.xml.

In your case,

<adminhtml>
  <menu>
    <cms translate="title" module="cms">
      <depends><module>HideMe</module></depends>
    </cms>
  </menu>
</adminhtml>
Scott Moorhouse
  • 239
  • 3
  • 9
  • 2
    Your science impresses me! Will depends work like that in other areas of the config file? I'd only even seen it used to ensure correct module loading order. – Alana Storm Apr 20 '09 at 22:01
  • It seems to be only for initializing Magento's modules (as you stated) and building the adminhtml menu. Module dependencies seem to be checked in these classes: Mage_Adminhtml_Block_Page_Menu Mage_Adminhtml_Model_Config Mage_Adminhtml_Model_System_Config_Source_Admin_Page Mage_Api_Model_Config Mage_Core_Model_Config – Scott Moorhouse Apr 21 '09 at 16:00
  • 1
    @Alan and @Scott just wondering if either of you found a more elegant way of doing this in the two years since posting. It seems a little ... hacky (no offense intended!). Thanks, JD – Jonathan Day May 05 '11 at 04:45
  • @JonathanDay It looks like modern version of Magento support a 1 node to turn a menu (or ACL rule) on/off. – Alana Storm Aug 08 '12 at 19:43
4

I don't think Alan would still need anyone to ask this question, but for anyone else that might end up reading this, it would be a bit better to use:

<adminhtml>
  <menu>
    <cms translate="title" module="cms">
      <depends><config>some/configuration/flag</config></depends>
    </cms>
  </menu>
</adminhtml>
dsueiro
  • 173
  • 5
2

For a specific menu point you can use:

<?xml version="1.0"?>
<config>
    <menu>
        <customer>
            <children>
                <online>
                    <disabled>1</disabled>
                </online>
            </children>
        </customer>
    </menu>
</config>