5

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

<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>。知道有人怎么做吗?我在谷歌上搜索了很多时间并没有找到解决方案。

4

3 回答 3

12

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

<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>
于 2014-09-12T07:43:30.007 回答
10

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

系统->配置->目录->前端->列表模式

于 2012-09-06T18:33:09.977 回答
2

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

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

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

默认网格模式。或者你甚至可以只通过一种模式来设置只有网格或列表模式可用。

于 2016-02-25T07:43:31.870 回答