在catalog.xml中为类别视图设置“List / Grid”默认视图模式

时间:2012-09-06 17:58:50

标签: magento

我正在尝试以列表或网格模式显示我的类别视图显示产品。

<reference name="content">
        <block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
            <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
                <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                    <block type="page/html_pager" name="product_list_toolbar_pager"/>
                    <!-- The following code shows how to set your own pager increments -->
                    <!--
                        <action method="setDefaultListPerPage"><limit>4</limit></action>
                        <action method="setDefaultGridPerPage"><limit>9</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>2</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>4</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>6</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>8</limit></action>
                        <action method="addPagerLimit" translate="label"><mode>list</mode><limit>all</limit><label>All</label></action>
                    -->
                </block>
                <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
                <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
                <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
            </block>
        </block>
    </reference>

以下是<catalog_category_layered><catalog_category_default>中的代码。知道有人怎么做吗?我正在谷歌搜索很多时间,并没有找到解决方案。

3 个答案:

答案 0 :(得分:11)

您可以使用以下xml在布局XML或admin中的“自定义布局更新”部分执行此操作:

<reference name="product_list_toolbar">
    <action method="setData"><key>_current_grid_mode</key><value>list</value></action>
</reference>

确保工具栏块名称在产品列表块中设置如下:

<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>

答案 1 :(得分:10)

您可以从后端设置网格或列表

  

系统 - &gt;配置 - &gt;目录 - &gt;前端 - &gt;列表模式

答案 2 :(得分:2)

如果您选择使用@ rengaw83描述的方法,您将无法再在该类别中的模式之间切换。例如,如果单击“网格”,模式将不会更改为网格模式。

为了能够通过自定义布局切换模式并仅在类别中设置默认视图模式,您需要覆盖核心工具栏块,并向其添加以下方法:

/**
 * Sets the current View modes (grid, list, etc.)
 *
 * @param array $modes
 */
public function setCurrentModes($modes)
{
    $this->_availableMode = $modes;
    $modes = array_keys($this->_availableMode);
    $defaultMode = current($modes);
    $mode = $this->getRequest()->getParam($this->getModeVarName());
    if ($mode) {
        if ($mode == $defaultMode) {
            Mage::getSingleton('catalog/session')->unsDisplayMode();
        }
    } else {
        $mode = Mage::getSingleton('catalog/session')->getDisplayMode();
    }

    if (!$mode || !isset($this->_availableMode[$mode])) {
        $mode = $defaultMode;
    }
    $this->setData('_current_grid_mode', $mode);
}

然后,您将能够在自定义布局选项卡中设置模式:

<reference name="product_list_toolbar">
    <action method="setCurrentModes">
        <modes>
            <list>List</list>
            <grid>Grid</grid>
        </modes>
    </action>
</reference>

表示默认列表模式,或

<reference name="product_list_toolbar">
    <action method="setCurrentModes">
        <modes>
            <grid>Grid</grid>
            <list>List</list>
        </modes>
    </action>
</reference>

表示默认网格模式。或者您甚至只能通过一种模式来设置网格或列表模式。