在magento 1.9.2

时间:2016-09-13 06:13:12

标签: php css twitter-bootstrap magento

我试图通过添加自定义类来覆盖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?

还有其他方法可以自定义顶层菜单吗?

1 个答案:

答案 0 :(得分:0)

不,你没有。要正确覆盖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')(例如)它不应该返回原始块,而是重写规则中指定的块(这是你的)。