我希望某些类别页面处于列表模式,并从显示的30个项目开始,但我希望另一个类别页面处于网格模式并显示较少的项目。
我知道我可以通过管理面板更新自定义布局xml来实现这一点,但我不确定确切的XML是什么。
答案 0 :(得分:5)
我的解决方案是创建一个覆盖Toolbar类的模块,该模块控制目录的网格/列表视图以及要显示的项目数。
要覆盖的特定类称为Mage_Catalog_Block_Product_List_Toolbar
。克隆文件并向其添加以下方法:
/**
* Sets the current View mode (grid, list, etc.)
*
* @param string $mode
*/
public function setCurrentMode($mode)
{
$this->setData('_current_grid_mode', $mode);
}
您还需要为它创建一个config.xml文件。
<!-- app/code/local/Example/Catalog/etc/config.xml -->
<?xml version="1.0"?>
<config>
<global>
<blocks>
<catalog>
<rewrite>
<product_list_toolbar>Example_Catalog_Block_Product_List_Toolbar</product_list_toolbar>
</rewrite>
</catalog>
</blocks>
</global>
</config>
现在,在管理面板中,要更改类别的布局,请转到目录&gt;管理类别并选择您要更改的类别。转到自定义设计选项卡,在标有自定义布局更新的字段中,输入以下XML代码:
<reference name="product_list_toolbar">
<action method="setCurrentMode">
<mode>list</mode>
</action>
</reference>
当然,请记住刷新Magento的布局缓存,否则您的更改不会出现。
答案 1 :(得分:2)
我知道它有点晚了,但即使没有直接通过布局XML或自定义布局更新&#34;管理部分:
<reference name="product_list_toolbar">
<action method="setData"><key>_current_grid_mode</key><value>list</value></action>
</reference>
答案 2 :(得分:0)
复制list.phml并将其重命名为grid.phtml,然后:
变化
<?php if($this->getMode()!='grid'): ?>
到
<?php if($this->getMode()!='list'): ?>
然后将该块添加到CMS页面:
{{block type="catalog/product_list" category_id="152" template="catalog/product/grid.phtml"}}