使用自定义块类覆盖Mage_Catalog块导航会使产品列表消失

时间:2013-09-23 06:57:26

标签: php magento

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

目录类别默认和目录搜索结果将以不同的方式组成侧边栏菜单项,我已经创建了我自己的模块,其中包含分别称为Leafcutter_Catalog_Block_Navigation_Category_Navigation和Leafcutter_Catalog_Block_Navigation_Search_Navigation的块类。这两个类都扩展了默认的Mage_Catalog_Block_Navigation。这是Module的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文件中写了一些额外的代码,以便在他们的repspective正确页面中容纳我新创建的块之一。

<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>

现在将这些更改应用到代码后,我的侧边栏按预期完美运行。但是,现在的问题是,在目录类别页面中,目录/ product_list根本不会呈现并且完全消失。请参阅下面的屏幕截图。

enter image description here

我的猜测是<class>Leafcutter_Catalog_Block</class>已被该模块所取代。

所以我的问题是如何获得这种侧边栏效果,如截图中所示,同时我有我的产品列表,并且我满足了客户的要求,即我将目录类别页面的侧边栏渲染为一个使用我的Leafcutter_Catalog_Block_Navigation_Category_Navigation块和搜索结果Leafcutter_Catalog_Block_Navigation_Search_Navigation块?

提前致谢。

1 个答案:

答案 0 :(得分:1)

将此添加到您的模块:

<class>Leafcutter_Catalog_Block</class>

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

<blocks>
    <catalog>
        <rewrite>
            <block_alias_here>New_Class_Name_Here</block_alias_here>
        </rewrite>
    </catalog>
</blocks>