Я не уверен, что я делаю не так здесь. Блок, в котором содержатся ссылки на категории, упоминается как navigation.sections. Я подумал, что, направив следующие аргументы в сторону контейнера, я смогу создать новую ссылку под ним. Любая помощь приветствуется.
<referenceContainer name="navigation.sections">
<block class="Magento\Framework\View\Element\Html\Links" name="mylink">
<arguments>
<argument name="label" xsi:type="string">Mylink</argument>
<argument name="path" xsi:type="string">mypath</argument>
<argument name="css_class" xsi:type="string">mycss</argument>
</arguments>
</block>
</referenceContainer>
Ответы:
[EDIT]
По-видимому, в последних версиях M2 это больше не работает.
Спасибо Максу за то, что указал на это.
Для более поздней версии вам нужно добавить плагин
Magento\Theme\Block\Html\Topmenu
вместо наблюдателя.Добавьте это к
etc/frontend/di.xml
и создайте файл класса плагина
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDIT]
Оригинальный ответ:
Вы можете добавить элементы в верхнее меню, используя событие
page_block_html_topmenu_gethtml_before
.Поэтому вам нужно создать модуль с этими файлами (все файлы должны быть в
app/code/[Namespace]/[Module]
):etc/module.xml
- файл декларации модуляregistration.php
- регистрационный файлetc/frontend/events.xml
- файл объявления событийObserver/Topmenu.php
- фактический наблюдательТеперь запустите в cli,
php bin/magento setup:upgrade
чтобы установить модуль, и все готово.источник
'is_active'
. Пожалуйста, добавьте пример. Я хочу активную ссылку на этой странице.$menu->addChild($node)
более одного раза, последний переопределяет другие. Показывает только одно меню (последнее).Почему все всегда хотят написать модуль. Я сделал это по-своему,
layout.xml
и это сработало как шарм:источник
Другое решение помимо создания модуля - перезапись topmenu.phtml. Отмечу, что решение, предоставляемое @Marius, является лучшим способом сделать это, если вы намерены, чтобы ваши ссылки наследовали классы навигации. Это отображается в мобильном меню Magento, просто без надлежащего CSS. Вы можете использовать аргумент css_class для стиля соответственно.
YourTheme / Magento_Theme / шаблоны / html / topmenu.phtml
YourTheme / Magento_Theme / макет / default.xml
источник
Этот ответ предоставлен Marius ♦ Я только что изменил его, чтобы добавить дочернюю категорию в меню на вкладке категории, в котором вы можете сослаться на ответ Marius ♦. Я просто изменил дочерний файл Topmenu.php, чтобы добавить дочернюю категорию в основную категорию
Вам необходимо создать узел для родительской категории и для дочерней категории, и после этого вы можете назначить дочернюю категорию для родительской категории с помощью метода addChild. Вот пример
источник
Topmenu
. Например, когда я наводю указатель мыши на ссылку, она показывает мой пользовательский элементИспользуя приведенный выше ответ Мариуса, я добавил пункты подменю. Я также показываю, как вы можете редактировать дерево перед созданием html, а затем, как редактировать html непосредственно после его создания. Работает в Magento 2.1. Обновите Topmenu.php следующим образом:
источник
Хотите добавить ссылку на верхнюю навигацию в разделе
<header>
Добавление ссылки на страницу CMS, Галерея
Отредактируйте / разместите файл default.xml здесь:
Добавьте следующий код:
Это добавляет ссылку на страницу CMS, Галерея, со следующими настройками:
Добавьте следующий стиль, чтобы убедиться, что новая ссылка выравнивается правильно:
(Продукты настроены в качестве категории для примера)
источник
Если вы хотите добавить CMS Pages или другое, это было бы лучше
https://github.com/Mestrona/Mestrona_CategoryRedirect
Работал для меня :)
источник
Для тех, кто хочет добавить
is_active
выражение, особенно @zed Blackbeard, которые спрашивали выше.Я привык связывать контакт, и он будет работать с пользовательским модулем, так как я ссылаюсь на него.
Надеюсь, это кому-нибудь поможет.
источник
Это тоже хороший вариант:
источник
Просто для ссылки в меню навигации не так много шагов, я нашел краткое руководство по этому вопросу, оно подразумевает тему, которая переопределяет
topmenu.phtml
файл изMagento_Theme
модуля: https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Я успешно проверил это, поэтому я делюсь этим с вами, ребята.источник