我是php的新手,我想要的是,如果我可以通过在文件中执行类似的操作来定义排序顺序以升级为仅按价格显示的产品
Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort
$options[] = array(
'label' => Mage::helper('catalog')->__('Price'),
'value' => 'price'
'getCurrentDirection' => 'asc'
);
其余属性按降序排列。
不幸的是,似乎没有奏效。 有人可以帮忙吗?
答案 0 :(得分:0)
我认为你正在查找错误的文件。您在上面描述的ListSort文件仅列出了排序依据的可用选项。它对当前的类型没有任何作用。
此外,您引用的文件位于Adminhtml范围内。如果您需要更改前端的默认排序,则应该查看其他位置。
如果我理解正确,你的问题是,如果选择价格进行排序,默认情况下如何排序ASC,而默认情况下排序DESC则另一个属性用于排序。
对于前端,您应该查看Mage_Catalog_Block_Product_List_Toolbar文件中的getCurrentOrder()函数。这里有默认方向和可用的排序顺序。破解app / core / Mage文件不是一个好习惯,但你可以复制这个文件并将其放在app / local / Mage / *(与核心文件完全相同的dir)中,它会自动重载默认方法。 / p>
对于后端,您可以查看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);
}
我希望这有帮助!