[英]Creating a custom top menu in magento 1.9.2
我试图通过添加自定义类来覆盖app / code / core / Mage / catalog / Block / Navigation.php,从而在magento 1.9.2中创建自定义顶级菜单。 我创建了一个新的本地扩展,其上有以下文件
应用程序的/ etc /模块/ 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>
应用程序/代码/本地/ Customnav /目录的/ 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>
应用程序/代码/本地/ Customnav /目录/助手/ Data.php
class Customnav_Catalog_Helper_Data extends Mage_Core_Helper_Abstract {}
应用程序/代码/本地/ Customnav /目录/块/ Navigation.php
在这个函数里面_renderCategoryMenuItemHtml我添加这行代码来添加新类但是不能通过magento识别
$classes[] = 'nav-item ';
我想在Navigation.php中添加额外的bootstrap类。
我是否正确覆盖了Navigation.php?
还有其他方法来自定义顶级菜单吗?
不,你没有。 要正确覆盖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>
上面的片段“告诉”配置如果Mage::app()->getLayout()->createBlock('catalog/navigation')
被调用(例如)它不应该返回原始块,而是Mage::app()->getLayout()->createBlock('catalog/navigation')
的块在重写规则(这是你的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.