我传入一个参数order=price&dir=desc
的查询字符串,按价格从大到小排序。在list.phtml
模板文件中
Mage_Catalog_Model_Resource_Product_Collection
具有空数组的orders属性,因此页面刷新但返回相同的默认集合。
我试图运行mysqladmin -u -p -i 1 processlist
查看对数据库的查询,但没有传递对产品的查询(缓存已关闭)。
我试图调试但显然它是按事件运行的,而且我很难找到哪些类:
1.对DB的实际查询发生
2.排序发生
也许有人有一些经验,为什么它不排序。感谢。
答案 0 :(得分:0)
//首先用于排序类别的类。
File Path : Mage/Catalog/Block/Product/List/Toolbar.php
//跟随用于排序集合的函数。
public function setCollection($collection)
{
$this->_collection = $collection;
$this->_collection->setCurPage($this->getCurrentPage());
// we need to set pagination only if passed value integer and more that 0
$limit = (int)$this->getLimit();
if ($limit) {
$this->_collection->setPageSize($limit);
}
if($this->getCurrentOrder() == 'review'){
$this->_collection->sortByReview($this->getCurrentDirection());
}
else if ($this->getCurrentOrder()) {
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
}
return $this;
}