2015-07-02 65 views
1

我想要做的事情看起來很簡單......但是由於某種原因,我還沒有弄清楚這一點。Magento - 根據佈局更新設置自定義排序方式和順序方向,僅針對一個類別

我想要做的只是 - 對於一個特定的類別 - 通過Magento後端更改排序依據屬性和排序順序方向。也就是說,我認爲最好的做法是使用自定義佈局更新XML。經過在互聯網上廣泛搜索後,我不能爲我的生活似乎找到一個答案(我希望這個意志的答案也將幫助其他人)。

很簡單,我已經試過以下自定義佈局更新XML的一個特定的類別:

<reference name="product_list_toolbar"> 
    <action method="setDefaultOrder"><string>created_at</string></action> 
    <action method="setDefaultDirection"><string>desc</string></action> 
</reference> 

而且這是行不通的! (它在我的自定義主題和默認的RWD主題中都沒有做任何事情。)

我試圖做什麼不可能?這似乎很容易!

在此先感謝。

注:我使用的Magento版本1.9.1.1

+0

嘗試引用名'product_list' –

+0

沒有這樣的運氣。引用'product_list_toolbar'或'product_list'不會改變排序順序的屬性或方向。 我已經注意到,但是,是如下的佈局更新XML改變排序順序的方向,但不排序次序屬性: '<引用名稱=「product_list_toolbar」><行動方法=「setDefaultDirection」>

降序' –

回答

2

經過大量的試驗和錯誤後發現這一點。

變化排序順序,我用Ricky的代碼,並使用Magento的後端,增加一條,作爲該類別的佈局更新XML:
(目錄>定製設計>自定義佈局更新)

<reference name="product_list_toolbar"> 
    <action method="setDefaultDirection"><string>desc</string></action> 
</reference> 

爲了由項排序添加,它需要擴展Mage_Catalog_Model_Config類的,因爲這樣的:
(具體改寫功能getAttributeUsedForSortByArray()

public function getAttributeUsedForSortByArray() 
{ 
    $options = array(
     'position' => Mage::helper('catalog')->__('Position'), // ADD TRAILING COMMA 
     // ADD ADDITIONAL ATTRIBUTES BELOW 
     'created_at' => Mage::helper('catalog')->__('Date') 
    ); 
    foreach ($this->getAttributesUsedForSortBy() as $attribute) { 
     /* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */ 
     $options[$attribute->getAttributeCode()] = $attribute->getStoreLabel(); 
    } 

    return $options; 
} 
2

出於某種原因,自定義佈局方法不Magento的1.9和後續工作。這可能是由Magento覆蓋local.xml中的<catalog_category_default>標籤引起的唯一解決方案是我打開主題local.xml並插入以下內容;

<CATEGORY_24> 
    <reference name="product_list_toolbar"> 
     <action method="setDefaultDirection"><string>desc</string></action> 
    </reference> 
</CATEGORY_24> 

其中<CATEGORY_24>被分類ID替換。

+0

這太好了!我在後端使用了代碼的第2-4行來顯示類別的佈局更新XML,以便順利切換排序順序,但是我使用了不同的方法來按屬性添加不同的排序方式。 –

1

這爲我工作:

<reference name="product_list"> 
    <action method="setDefaultDirection"><string>desc</string></action> 
    <action method="setSortBy"><string>sku</string></action> 
</reference> 
<reference name="product_list_toolbar"> 
    <action method="setDefaultDirection"><string>desc</string></action> 
    <action method="setSortBy"><string>sku</string></action> 
    <action method="setDefaultGridPerPage"><limit>260</limit></action> 
    <action method="setDefaultListPerPage"><limit>260</limit></action> 
</reference> 
+1

你能解釋爲什麼它適合你嗎?爲什麼這個問題的解決方案?SO中不接受只有代碼的答案 – JorgeHortelano

相關問題