Когда конкретному администратору или конкретной группе администраторов запрещена некоторая функция - то и пункт меню пропадёт.
Этот способ - самый правильный, если вам нужно не просто скрыть пункт меню, а запретить доступ к функции.
Однако, бывают ситуации, когда нужно просто скрыть пункт административного меню без запрещения доступа к соответствующей пункту функциональности.
Например, такая потребность возникает, если вы проводите реорганизацию административного меню: хотите переставить его пункты местами.
Например, в стандартной функциональности есть пункт меню Продажа -> Доставка, а вам может потребоваться целый раздел "Доставка" с подпунктами, одним из которых будет стандартный пункт "Доставка".
Как скрыть пункт административного меню?
Для этого существует следующий приём: надо сказать системе, что данный пункт меню зависит от несуществующего модуля.
Например, вы можете написать adminhtml.xml для вашего модуля следующего содержания:
<?xml version="1.0"?> <config> <menu> <sales> <children> <shipment translate="title" module="sales"> <depends> <module>NotExistent</module> </depends> </shipment> </children> </sales> </menu> </config>
Данный набор правил говорит системе, что стандартный пункт меню sales / shipment зависит от несуществующего модуля NotExistent.
Система, видя, что модуль NotExistent отсутствует, исключит из меню пункт Продажа -> Доставка.
Далее вы можете добавить этот стандартный пункт меню в другое место, вставив в требуемое место стандартное описание пункта "Доставка", например:
<?xml version="1.0"?> <config> <menu> <sales> <children> <mymodule_shipping translate="title" module="mymodule_shipping"> <sort_order>15</sort_order> <title>Новый пункт меню для всех функций доставки</title> <children> <shipment translate="title" module="sales"> <title>Shipments</title> <action>adminhtml/sales_shipment</action> <sort_order>30</sort_order> </shipment> </children> </mymodule_shipping> </children> </sales> </menu> </config>