2012-09-06 32 views
4

我試圖以默認的列表或網格模式執行我的類別視圖顯示產品。在catalog.xml中爲類別視圖設置「列表/網格」默認視圖模式

<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>代碼。知道任何人如何做到這一點?我在Google上搜索了很多時間並沒有找到解決方案。

回答

11

您可以在佈局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> 
+0

這是一個很好的解決方案,如果你想覆蓋特定類別的默認顯示模式。 –

+0

希望我能投2倍..我安裝了一個擴展,劫持'setToolbarBlockName' ..你回答幫助我的第二個問題,確保我使用重寫的'setToolbarBlockName'名稱 –

10

您可以設置網格或列表從後端

系統 - >配置 - >目錄 - > Frontend->列表模式

+0

謝謝,但我想通過代碼,從xml佈局,像那些功能,把最大數量的產品 – Carlos

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> 
默認網格模式的

。或者你甚至可以只傳遞一種模式來設置可用的網格或列表模式。

相關問題