Magento类别页面:将特定类别的布局从网格模式更改为列表模式

时间:2010-12-03 04:57:36

标签: xml layout magento

我希望某些类别页面处于列表模式,并从显示的30个项目开始,但我希望另一个类别页面处于网格模式并显示较少的项目。

我知道我可以通过管理面板更新自定义布局xml来实现这一点,但我不确定确切的XML是什么。

3 个答案:

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

请参阅:https://stackoverflow.com/a/25803228/1918829

答案 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"}}