2012-10-08 55 views
2

我是新來的PHP,我要的是,如果我可以定義排序爲了提升到由價格表示通過文件Magento的不同排序

在做這樣的事情Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort

只產品屬性
$options[] = array(
    'label' => Mage::helper('catalog')->__('Price'), 
    'value' => 'price' 
    'getCurrentDirection' => 'asc' 
); 

和其他屬性按降序排列。

不幸的是,似乎沒有工作。 任何人都可以幫忙嗎?

+0

我不明白你的問題。請嘗試更清楚地描述問題和您的想法。謝謝。 – Alex

回答

0

我認爲你正在尋找錯誤的文件。上面描述的ListSort文件僅列出了可供排序的選項。它目前沒有做任何事情。

此外,您引用的文件位於Adminhtml範圍內。如果你需要改變前端的默認排序,你應該看看其他地方。

如果我理解正確的話,你的問題是如何按默認值排序ASC,如果選擇價格進行排序,默認排序DESC是使用另一個屬性進行排序。

對於前端,您應該查看Mage_Catalog_Block_Product_List_Toolbar文件中的getCurrentOrder()函數。在這裏,您可以同時使用默認方向和排序順序。破解app/core/Mage文件並不是一個好習慣,但是你可以複製這個文件並將它放在app/local/Mage/*(與核心文件完全相同的目錄),並且它會自動超載默認方法。

對於後端,您可以查看Mage_Adminhtml_Block_Widget文件中的_prepareCollection()函數。默認排序是'desc',所以您只需將其更改爲'asc'即可。在這裏,你也應該在app/local/Mage/*中創建一個副本。你可以嘗試這樣的事情(對於Magento的1.7.1.0,這是行507-508):

變化

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort); 
$dir  = $this->getParam($this->getVarNameDir(), $this->_defaultDir); 

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort); 
if($this->getVarNameSort() == 'price') { 
    $dir  = $this->getParam($this->getVarNameDir(), 'asc'); 
} else { 
    $dir  = $this->getParam($this->getVarNameDir(), $this->_defaultDir); 
} 

我希望這有助於!