0

我继承了一个需要从 2.1 升级到更新版本的 Magento 项目,因此我对 Magento 2.4.3 进行了更新。大多数事情似乎都没有问题,但是顶部菜单中的主导航没有呈现。

在我的design/frontend/<VENDOR>/<THEME>/templates/html/topmenu.phtml文件中,我有以下代码:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

$columnsLimit = $block->getColumnsLimit() ?: 0;
$_menu = $block->getHtml('level-top', 'submenu', $columnsLimit);
?>
<nav class="navigation" data-action="navigation">
    <ul data-mage-init='{"menu":{"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}}}'>
        <?= /* @noEscape */ $_menu ?>
        <?= $block->getChildHtml() ?>
    </ul>
</nav>

在我的自定义design/frontend/<VENDOR>/<THEME>/layout/default.xml文件中,我添加了以下代码:

<referenceContainer name="store.menu">
    <block class="<VENDOR>\Theme\Block\Html\Topmenu" name="catalog.topnav" template="Magento_Theme::html/topmenu.phtml" />
</referenceContainer>

该类引用的块只是在 中找到的原始块的复制/粘贴app/code/Magento/Theme/Block/Html/Topmenu.php,因此没有进行自定义编辑。

使用原始块根本不会显示该块。相反,使用Magento\Framework\View\Element\Template我的自定义块时,会呈现一个空块。

这是输出:


            
<nav class="navigation" data-action="navigation">
    <ul id="ui-id-2" class="ui-menu ui-widget ui-widget-content ui-corner-all" role="menu" tabindex="0">
        <!-- Nothing in here -->
    </ul>
</nav>

而我希望为每个类别及其子项呈现不同的列表项。

所有类别都已启用并包含在菜单中,并且都是后端为商店视图选择的主根类别的所有子类别。

如果我尝试记录返回的内容,$block->getHtml()我会得到一个空字符串。

Magento 使用内置缓存,而不是 Varnish,并且所有内容都可以编译而没有任何错误。

可能是什么问题呢?

4

0 回答 0