Как добавить новый элемент в верхнее административное меню

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

24.01.2011 16:39

Чтобы добавить в верхнее административное меню новый элемент, создайте в папке etc вашего модуля файл с именем adminhtml.xml и поместите внутрь его примерно такой код:

<?xml version="1.0"?>
<config>
	<menu>
		<df_test translate="title" module="df_test">
			<title>Пример пункта меню</title>
			<sort_order>71</sort_order>

			<children>
				<action1 translate="title" module="df_test">
					<title>Подпункт 1</title>
					<action>adminhtml/action1</action>
					<sort_order>10</sort_order>
				</action1>
				<action2 translate="title" module="df_test">
					<title>Подпункт 2</title>
					<action>adminhtml/action2</action>
					<sort_order>20</sort_order>
				</action2>
			</children>
		</df_test>
	</menu>

	<acl>
		<resources>
			<admin>
				<children>
					<df_test translate="title" module="df_test">
						<title>Пример пункта меню</title>
						<children>
							<action1 translate="title" module="df_test">
								<title>Подпункт 1</title>
								<sort_order>10</sort_order>
							</action1>
							<action2 translate="title" module="df_test">
								<title>Подпункт 2</title>
								<sort_order>20</sort_order>
							</action2>
						</children>
					</df_test>
				</children>
			</admin>
		</resources>
	</acl>
</config>


#2 Анатолий Скидкин
  • Группа: Пользователь
  • Сообщений: 23
  • Регистрация: 24.01.2011

24.01.2011 16:46

сделал, поместил, пункт не появился

#3 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

24.01.2011 16:49

Подставили ли вы в данный код название вашего модуля?

#4 Анатолий Скидкин
  • Группа: Пользователь
  • Сообщений: 23
  • Регистрация: 24.01.2011

24.01.2011 17:03

да подставил, модуль делал по вашему уроку

<?xml version="1.0"?>
<config>
<menu>
<Module1 translate="title" module="Module1">
<title>Пример пункта меню</title>
<sort_order>71</sort_order>

<children>
<action1 translate="title" module="Module1">
<title>Подпункт 1</title>
<action>adminhtml/action1</action>
<sort_order>10</sort_order>
</action1>
<action2 translate="title" module="Module1">
<title>Подпункт 2</title>
<action>adminhtml/action2</action>
<sort_order>20</sort_order>
</action2>
</children>
</Module1>
</menu>

<acl>
<resources>
<admin>
<children>
<Module1 translate="title" module="Module1">
<title>Пример пункта меню</title>
<children>
<action1 translate="title" module="Module1">
<title>Подпункт 1</title>
<sort_order>10</sort_order>
</action1>
<action2 translate="title" module="Module1">
<title>Подпункт 2</title>
<sort_order>20</sort_order>
</action2>
</children>
</Module1>
</children>
</admin>
</resources>
</acl>
</config>

#5 Анатолий Скидкин
  • Группа: Пользователь
  • Сообщений: 23
  • Регистрация: 24.01.2011

24.01.2011 17:09

кеш у меня отключен

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

24.01.2011 17:14

Так сложно сказать, в чём может быть проблема.
У меня работает, вот пример моего модуля, который добавляет элемент в верхнее меню: "импорт структуры товарного каталога"

#7 Анатолий Скидкин
  • Группа: Пользователь
  • Сообщений: 23
  • Регистрация: 24.01.2011

24.01.2011 17:19

может у меня версия магенто не та? я поставил 1.5.0.0-beta1. Или не выводится изза того что самого модуля нет, точнее он как бы есть но не работает.

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

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

24.01.2011 17:20

Может быть и то, и другое, и третьи факторы могут влиять.
Magento - сложная система: либо вы инвестируете в неё свое время и проводите его в отладчике, вместо того, чтобы сходить, скажем, в кино, либо платите специалисту, и он всё делает.

#9 Анатолий Скидкин
  • Группа: Пользователь
  • Сообщений: 23
  • Регистрация: 24.01.2011

24.01.2011 17:27

Просмотр сообщенияДмитрий Федюк (24.01.2011 17:20) писал:

Может быть и то, и другое, и третьи факторы могут влиять.
Magento - сложная система: либо вы инвестируете в неё свое время и проводите его в отладчике, вместо того, чтобы сходить, скажем, в кино, либо платите специалисту, и он всё делает.


да я понял, буду разбираться, скорее всего изложеный метод не подходит для версии 1,5,0,0
а на более ранних версиях почемуто когда отключаю кеш магенто слетает, выдает ошибку при потытке доступа на сайт или в админку

#10 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 11:27

А как не добавить новый элемент в верхнее административное меню, а заменить существующий?

#11 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 11:30

Какова прикладная цель данного действия?

#12 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 11:36

Просмотр сообщенияДмитрий Федюк (07.07.2011 11:30) писал:

Какова прикладная цель данного действия?

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

#13 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 11:39

Вы можете скрыть часть функций и соответствующие им пункты меню в разделе System -> Permissions -> Roles.

#14 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 11:55

Просмотр сообщенияДмитрий Федюк (07.07.2011 11:39) писал:

Вы можете скрыть часть функций и соответствующие им пункты меню в разделе System -> Permissions -> Roles.

Попробовал. В принципе это решение, но, если включить отображение добавленного элемента, то в меню он отображается, а в разделе System -> Permissions -> Roles всегда не включен (т.е. галки не отмечено).
Хотелось бы все же узнать, возможно ли сделать замену пунктов меню из модуля, не копаясь в файлах magento?

#15 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 11:58

Какая проблема возникает у администратора после применния указанного мной метода?
Цитировать мои сообщения не нужно.

#16 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 12:10

Проблема - при открытии System -> Permissions -> Roles добавленный пункт меню не отмечен, как будто он скрыт, хотя на самом деле в меню он отображен.
Неудобство - для скрытия старого заменяемого элемента меню необходимо изменять настройки System -> Permissions -> Roles.

#17 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 12:24

Ваш новый нестандартный пункт меню должен поялвяться на экране System -> Permissions -> Roles, если вы правильно заполнили блок настроек внутри тега acl из первого сообщения темы.

#18 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 12:37

Вот код.
<?xml version="1.0"?>
<config>
	<menu>
		<Mailer module="Mailer">
			<title>Mailer</title>
			<sort_order>60</sort_order>

		</Mailer>
	</menu>
    <acl>
            <resources>
                    <admin>
                            <children>
                                    <Mailer module="Mailer">
                                            <title>Mailer</title>
                                    </Mailer>
                            </children>
                   </admin>
            </resources>
    </acl>
</config>

В списке System -> Permissions -> Roles Mailer есть, но всегда не отмечен. Даже если отметить и сохранить, пункт в меню добавится, но checkbox, соответствующий Mailer в System -> Permissions -> Roles будет пуст. Что-то не так в коде?

#19 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 12:42

Например, у вас, в отличие от зпримера из залавного сообщения, отсутствует пространство имён вашего модуля.
Ещё, в примере из заглавного сообщения имя модуля записано строчными буквами.
Могут быть и другие расхождения, смотрите внимательней.

#20 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 12:47

Ок, но всё же повторюсь ещё раз, есть ли вообще возможность автоматом из модуля скрыть нужный пункт меню?

#21 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

07.07.2011 12:48

Есть, конечно.
Но так сходу не напишу, надо код смотреть.

#22 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

07.07.2011 12:50

Спасибо, буду копать зная что есть что накопать. :) Если выясните как напишите плиз.

#23 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

08.07.2011 15:53

Ну вот копаясь на англоязычных форумах нашел кое-что. Чтобы скрыть элемент меню частенько используют
		<newsletter>
			<depends><module>My_Nonexisting_Model</module></depends>
		</newsletter>

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

#24 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

04.09.2011 16:09

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

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