【问题标题】:Creating a custom top menu in magento 1.9.2在 magento 1.9.2 中创建自定义顶部菜单
【发布时间】:2017-01-20 15:46:22
【问题描述】:

我正在尝试通过添加自定义类覆盖 app/code/core/Mage/catalog/Block/Navigation.php 在 magento 1.9.2 中创建自定义顶部菜单。 我创建了一个新的本地扩展,其中包含以下文件

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?

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

【问题讨论】:

    标签: php css twitter-bootstrap magento


    【解决方案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()-&gt;getLayout()-&gt;createBlock('catalog/navigation'),它不应该返回原始块,而是重写规则(这是你的)中所述的块。

    【讨论】:

    • 感谢@Giel Berkers 的回答。对navigation.php 的任何自定义似乎都没有效果。我试图操纵核心文件进行调试,但仍然没有发生任何变化。 Magento 1.9.2 是否使用 Navigation.php?
    • 如果编辑核心文件没有造成任何损害,是不是你有一个不同的模块也在尝试重写Mage_Catalog_Block_Navigation?如果你把echo get_class($this) 放在你的navigation.phtml-template 文件中,它会说什么?
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2016-10-16
    相关资源
    最近更新 更多