繁体   English   中英

在magento 1.9.2中创建自定义顶级菜单

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM