我正在做一个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根本不会呈现并且完全消失。请参阅下面的屏幕截图。
我的猜测是<class>Leafcutter_Catalog_Block</class>
已被该模块所取代。
所以我的问题是如何获得这种侧边栏效果,如截图中所示,同时我有我的产品列表,并且我满足了客户的要求,即我将目录类别页面的侧边栏渲染为一个使用我的Leafcutter_Catalog_Block_Navigation_Category_Navigation块和搜索结果Leafcutter_Catalog_Block_Navigation_Search_Navigation块?
提前致谢。
答案 0 :(得分:1)
将此添加到您的模块:
<class>Leafcutter_Catalog_Block</class>
将导致重写以catalog/..
开头的所有块。您应该删除它并仅重写您需要重写的块。
<blocks>
<catalog>
<rewrite>
<block_alias_here>New_Class_Name_Here</block_alias_here>
</rewrite>
</catalog>
</blocks>