Как скрыть пункт административного меню?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

04.09.2011 15:56

Простой способ скрыть пункт административного меню - через управление доступом.
Когда конкретному администратору или конкретной группе администраторов запрещена некоторая функция - то и пункт меню пропадёт.
Этот способ - самый правильный, если вам нужно не просто скрыть пункт меню, а запретить доступ к функции.

Однако, бывают ситуации, когда нужно просто скрыть пункт административного меню без запрещения доступа к соответствующей пункту функциональности.
Например, такая потребность возникает, если вы проводите реорганизацию административного меню: хотите переставить его пункты местами.
Например, в стандартной функциональности есть пункт меню Продажа -> Доставка, а вам может потребоваться целый раздел "Доставка" с подпунктами, одним из которых будет стандартный пункт "Доставка".

Как скрыть пункт административного меню?
Для этого существует следующий приём: надо сказать системе, что данный пункт меню зависит от несуществующего модуля.

Например, вы можете написать 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>


Поделиться темой: