重新编写块时是否需要在Magento2中重写模板?
这个问题是关于遵循Magento2最佳实践的。 我必须重写\ Magento \ Theme \ Block \ Html \ Topmenu :: _ addSubMenu()方法,以便在元素周围添加一些包装。现在,因为它是一种受保护的方法,所以我的理解是我必须使用首选项功能: <preference for="Magento\Theme\Block\Html\Topmenu" type="MyCompany\Theme\Block\Html\Topmenu" /> 并添加一个带有我的重写的类: <?php namespace MyCompany\Theme\Block\Html; class Topmenu extends \Magento\Theme\Block\Html\Topmenu { protected function _addSubMenu($child, $childLevel, $childrenWrapClass, $limit) { // my stuff } } 尽管默认类被重写,但在下一页重新加载时,出现以下错误: main.CRITICAL:模块:“ MyCompany_Theme”块的名称:“ catalog.topnav”中无效的模板文件:“ html / topmenu.phtml” [] [] Magento尝试在我的扩展名下而不是在Magento_Theme下找到html / …