Удаление элемента из навигации панели администратора Magento

Можно ли удалить элемент из меню навигации панели администратора с помощью системы электронной коммерции Magento? В более общем смысле, есть ли способ использовать систему переопределения конфигурации для удаления существующих элементов из конфигурации?

Я знаю, что могу добавить к навигации переопределение, которое выглядит примерно так

<?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>

но как бы/мог я полностью подавить элемент навигации CMS?


person Alan Storm    schedule 07.04.2009    source источник


Ответы (4)


Более чистый способ сделать это:

Добавьте adminhtml.xml (например, в существующие модули, в которых хранятся все остальные настройки, или создайте новый модуль)

<?xml version="1.0" ?>
<config>
    <menu>
        <xmlconnect>
            <disabled>1</disabled>
        </xmlconnect>
    </menu>
</config>
person fbrnc    schedule 15.11.2012
comment
Это определенно способ справиться с вещами в современной версии Magento. Я не уверен, поддерживается ли он в более старой версии, но если у вас возникли проблемы, посмотрите старый, оригинальный принятый ответ: stackoverflow.com /а/769931/4668 - person Alan Storm; 15.11.2012

Вы можете внедрить фиктивную зависимость модуля в пункт меню в вашем config.xml.

В твоем случае,

<adminhtml>
  <menu>
    <cms translate="title" module="cms">
      <depends><module>HideMe</module></depends>
    </cms>
  </menu>
</adminhtml>
person Scott Moorhouse    schedule 20.04.2009
comment
Ваша наука меня впечатляет! Будут ли зависимости работать так же в других областях конфигурационного файла? Я даже видел, как он используется для обеспечения правильного порядка загрузки модулей. - person Alan Storm; 21.04.2009
comment
Кажется, это только для инициализации модулей Magento (как вы сказали) и построения меню adminhtml. Зависимости модулей проверяются в этих классах: 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 - person Scott Moorhouse; 21.04.2009
comment
@ Алан и @ Скотт просто интересуются, нашел ли кто-нибудь из вас более элегантный способ сделать это за два года после публикации. Это кажется немного ... хакерским (без обид!). Спасибо, Джей Ди - person Jonathan Day; 05.05.2011
comment
@JonathanDay Похоже, что современная версия Magento поддерживает узел ‹disabled›1‹/disabled› для включения/выключения меню (или правила ACL). - person Alan Storm; 08.08.2012

Я не думаю, что Алану по-прежнему нужно, чтобы кто-то задавал этот вопрос, но для всех, кто может в конечном итоге прочитать это, было бы немного лучше использовать:

<adminhtml>
  <menu>
    <cms translate="title" module="cms">
      <depends><config>some/configuration/flag</config></depends>
    </cms>
  </menu>
</adminhtml>
person dsueiro    schedule 24.05.2012

Для определенного пункта меню вы можете использовать:

<?xml version="1.0"?>
<config>
    <menu>
        <customer>
            <children>
                <online>
                    <disabled>1</disabled>
                </online>
            </children>
        </customer>
    </menu>
</config>
person Jeroen Vermeulen - MageHost    schedule 02.08.2013