我认为您正在查看错误的文件。您在上面描述的 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);
}
我希望这有帮助!