0

我正在做一个 Magento 网站,客户对他们希望如何显示侧边栏有特定要求。

目录类别默认值和目录搜索结果将以不同的方式组成侧边栏菜单项,我创建了自己的模块,分别使用名为 Leafcutter_Catalog_Block_Navigation_Category_Navigation 和 Leafcutter_Catalog_Block_Navigation_Search_Navigation 的块类。这两个类都扩展了默认的 Mage_Catalog_Block_Navigation。这是模块的 config.xml 文件:

    <?xml version="1.0"?>
<config>
    <modules>
        <Leafcutter_Catalog>
            <version>1.0</version>
        </Leafcutter_Catalog>
    </modules>
    <global>
        <blocks>
            <catalog>
                <rewrite>
                    <product_list_toolbar>Leafcutter_Catalog_Block_Product_List_Toolbar</product_list_toolbar>
                    <!--<navigation>Leafcutter_Catalog_Block_Navigation</navigation>-->
                    <product_list>Leafcutter_Catalog_Block_Product_List</product_list>
                </rewrite>
                <class>Leafcutter_Catalog_Block</class>
            </catalog>
        </blocks>
        <helpers>
            <catalog>
                <rewrite>
                    <category>Leafcutter_Catalog_Helper_Category</category>
                </rewrite>
            </catalog>
        </helpers>
    </global>

如您所见,我使用了<class>Leafcutter_Catalog_Block</class>声明,因为我不想使用<rewrite>Mage_Catalog_Block_Nagvigation</rewrite>,因为我假设我将失去使用新创建的自定义块类的能力。

我还在我的布局目录中的 local.xml 文件中编写了一些额外的代码,以在它们各自正确的页面中容纳我新创建的块之一。

<catalog_category_default>
            <reference name="product_list">
                <action method="setColumnCount"><columns>3</columns></action>
            </reference>
            <reference name="left">
                <block type="catalog/navigation_category_navigation" as="catalog.polar.vertnav" before="-" template="catalog/navigation/vertnav.phtml" />
            </reference>
        </catalog_category_default>
        <catalog_category_layered>
            <reference name="product_list">
                <action method="setColumnCount"><columns>3</columns></action>
            </reference>
            <reference name="left">
                <block type="catalog/navigation_category_navigation" as="catalog.polar.vertnav" before="-" template="catalog/navigation/vertnav.phtml" />
            </reference>
        </catalog_category_layered>

现在将这些更改应用于代码后,我的侧边栏可以正常工作。但是,现在的问题是,当在目录类别页面中时,catalog/product_list 根本没有呈现并且完全消失了。请看下面的截图。

在此处输入图像描述

我的猜测是<class>Leafcutter_Catalog_Block</class>已经被那个模块取代了。

所以我的问题是我如何获得这个侧边栏效果,如您在屏幕截图中看到的那样,同时我有我的产品列表并且我满足客户的要求,即我使用我的以一种方式呈现目录类别页面的侧边栏Leafcutter_Catalog_Block_Navigation_Category_Navigation 块和搜索结果 Leafcutter_Catalog_Block_Navigation_Search_Navigation 块?

提前致谢。

4

1 回答 1

1

将此添加到您的模块中:

<class>Leafcutter_Catalog_Block</class>

将导致重写所有以 . 开头的块catalog/..。您应该删除它并只重写您需要重写的块。

<blocks>
    <catalog>
        <rewrite>
            <block_alias_here>New_Class_Name_Here</block_alias_here>
        </rewrite>
    </catalog>
</blocks>
于 2013-09-23T07:47:19.710 回答