在 magento 1.9.2 中创建自定义顶部菜单
Posted
技术标签:
【中文标题】在 magento 1.9.2 中创建自定义顶部菜单【英文标题】:Creating a custom top menu in magento 1.9.2 【发布时间】:2017-01-20 15:46:22 【问题描述】:我正在尝试通过添加自定义类覆盖 app/code/core/Mage/catalog/Block/Navigation.php 。 我创建了一个新的本地扩展,其中包含以下文件
app/etc/modules/Customnav_Catalog.xml
<?xml version="1.0"?>
<config>
<modules>
<Customnav_Catalog>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Customnav_Catalog>
</modules>
</config>
app/code/local/Customnav/catalog/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Customnav_Catalog>
<version>0.1.0</version>
</Customnav_Catalog>
</modules>
<global>
<helpers>
<Customnav_Catalog>
<class>Customnav_Catalog_Helper</class>
</Customnav_Catalog>
</helpers>
<blocks>
<Customnav_Catalog>
<class>Customnav_Catalog_Block</class>
</Customnav_Catalog>
<Customnav_Catalog>
<class>Customnav_Catalog_Block</class>
<rewrite>
<navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation>
</rewrite>
</Customnav_Catalog>
</blocks>
</global>
</config>
app/code/local/Customnav/catalog/Helper/Data.php
class Customnav_Catalog_Helper_Data extends Mage_Core_Helper_Abstract
app/code/local/Customnav/catalog/Block/Navigation.php
在这个函数 _renderCategoryMenuItemhtml 中我添加了这行代码来添加新的类,但 magento 无法识别
$classes[] = 'nav-item ';
我想在 Navigation.php 中添加额外的引导类。
我是否正确覆盖 Navigation.php?
还有其他方法可以自定义顶部菜单吗?
【问题讨论】:
【参考方案1】:不,你没有。要正确覆盖Mage_Catalog_Block_Navigation
,您需要将重写置于该特定块配置中。所以而不是:
<blocks>
<Customnav_Catalog>
<class>Customnav_Catalog_Block</class>
</Customnav_Catalog>
<Customnav_Catalog>
<class>Customnav_Catalog_Block</class>
<rewrite>
<navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation>
</rewrite>
</Customnav_Catalog>
</blocks>
你应该写:
<blocks>
<Customnav_Catalog>
<class>Customnav_Catalog_Block</class>
</Customnav_Catalog>
<catalog>
<rewrite>
<navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
上面的 sn-p '告诉' 配置,如果(例如)调用Mage::app()->getLayout()->createBlock('catalog/navigation')
,它不应该返回原始块,而是重写规则(这是你的)中所述的块。
【讨论】:
感谢@Giel Berkers 的回答。对navigation.php 的任何自定义似乎都没有效果。我试图操纵核心文件进行调试,但仍然没有发生任何变化。 Magento 1.9.2 是否使用 Navigation.php? 如果编辑核心文件没有造成任何损害,是不是你有一个不同的模块也在尝试重写Mage_Catalog_Block_Navigation
?如果你把echo get_class($this)
放在你的navigation.phtml
-template 文件中,它会说什么?以上是关于在 magento 1.9.2 中创建自定义顶部菜单的主要内容,如果未能解决你的问题,请参考以下文章