Как добавить пользовательскую ссылку в главное меню в Magento 2?
Я хочу добавить страницы CMS и Контактную страницу ссылку в главном меню.
Как добавить эти ссылки в главное меню и их подменю?
7
Author: Rafael Corrêa Gomes, 2017-12-20
2 answers
Скопировать файл из
vendor/magento/module-theme/view/frontend/templates/html/topmenu.phtml
И поместите этот файл в папку вашей темы
app/design/frontend/Vendor/YourTheme/Magento_Theme/templates/html/topmenu.phtml
Добавьте ниже <li>
структуру сразу после строки <?php /* @escapeNotVerified */ echo $block->getChildHtml(); ?>
в topmenu.phtml
<li class="level0 level-top ui-menu-item">
<a href="<?php echo $this->getBaseUrl()."yourlink"; ?>" class="level-top ui-corner-all" role="menuitem">
<span><?php echo __("Your Custom Menu")?></span>
</a>
</li>
12
Author: Suresh Chikani, 2019-07-16 06:25:05
Другой альтернативой является использование нового файла шаблона с помощью xml-макета.
./app/design/frontend/Company/Yourtheme/Magento_Theme/layout/default.xml
<?xml version="1.0"?>
<!--
/**
* Copyright info.
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="catalog.topnav">
<block name="custom.menu.links" template="Magento_Theme::html/topmenu_custom.phtml"/>
</referenceBlock>
</body>
</page>
Затем используйте этот файл шаблона для создания html-ссылки.
./приложение/дизайн/интерфейс/Компания/Ваша тема/magento_theme/шаблоны/html/topmenu_custom.phtml
<?php
/** @var \Magento\Framework\View\Element\Template $block */
?>
<li class="level0 level-top ui-menu-item">
<a href="<?php echo $this->getBaseUrl()."faq"; ?>" class="level-top ui-corner-all" role="menuitem">
<span><?= __("FAQ")?></span>
</a>
</li>
<li class="level0 level-top ui-menu-item">
<a href="<?php echo $this->getUrl('custom/index/index'); ?>" class="level-top ui-corner-all" role="menuitem">
<span><?= __("Custom Designs")?></span>
</a>
</li>
Когда вы очистите кэш layout и block_html, они отобразятся в меню. Примечание:
- Таким образом, мы не будем касаться оригинала
topmenu.phtml
- Для вывода будет использоваться файл topmenu.phtml
$block->getChildHtml()
- В xml-файлах макета если вы игнорируете атрибут
class=""
для блока, то по умолчанию будет использоваться класс\Magento\Framework\View\Element\Template
.
Надеюсь, это поможет
7
Author: Dilhan Maduranga, 2019-07-16 03:16:44