#php #magento #magento2 #magento2.4
Вопрос:
Я унаследовал проект Magento, который необходимо было обновить с версии 2.1 до более поздней версии, поэтому я выполнил обновление до Magento 2.4.3. Большинство вещей, похоже, работают без проблем, однако основная навигация в верхнем меню не отображается.
В моем design/frontend/lt;VENDORgt;/lt;THEMEgt;/templates/html/topmenu.phtml
файле у меня есть следующий код:
lt;?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ $columnsLimit = $block-gt;getColumnsLimit() ?: 0; $_menu = $block-gt;getHtml('level-top', 'submenu', $columnsLimit); ?gt; lt;nav class="navigation" data-action="navigation"gt; lt;ul data-mage-init='{"menu":{"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}}}'gt; lt;?= /* @noEscape */ $_menu ?gt; lt;?= $block-gt;getChildHtml() ?gt; lt;/ulgt; lt;/navgt;
В свой пользовательский design/frontend/lt;VENDORgt;/lt;THEMEgt;/layout/default.xml
файл я добавил следующий фрагмент кода:
lt;referenceContainer name="store.menu"gt; lt;block class="lt;VENDORgt;ThemeBlockHtmlTopmenu" name="catalog.topnav" template="Magento_Theme::html/topmenu.phtml" /gt; lt;/referenceContainergt;
Блок , на который ссылается этот класс, является просто копией/вставкой исходного блока, в котором он находится app/code/Magento/Theme/Block/Html/Topmenu.php
, поэтому никаких пользовательских изменений не было сделано.
Использование исходного блока вообще не отображает блок. Использование MagentoFrameworkViewElementTemplate
вместо этого отображает пустой блок, как при использовании моего пользовательского блока.
Это и есть результат:
lt;nav class="navigation" data-action="navigation"gt; lt;ul id="ui-id-2" class="ui-menu ui-widget ui-widget-content ui-corner-all" role="menu" tabindex="0"gt; lt;!-- Nothing in here --gt; lt;/ulgt; lt;/navgt;
в то время как я ожидал бы, что для каждой категории будут отображаться разные элементы списка и их дети.
Все категории включены и включены в меню, и все они являются дочерними элементами основной корневой категории, выбранной для представления магазина серверной частью.
Если я попытаюсь записать то, что возвращается, $block-gt;getHtml()
я получу пустую строку.
Magento использует встроенный кэш, а не лак, и все компилируется без каких-либо ошибок.
В чем может быть проблема?