我认为问题在于 Mage_Catalog_Block_Product_List 块中的 getSortBy 魔术方法。而在
protected function _beforeToHtml()
您可能会看到该代码
if ($sort = $this->getSortBy()) {
$toolbar->setDefaultOrder($sort);
}
...
$toolbar->setCollection($collection);
然后转到工具栏(Mage_Catalog_Block_Product_List_Toolbar)
public function setCollection($collection)
{
...
if ($this->getCurrentOrder()) {
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
}
我认为这是一个问题。您可以尝试在您的块中覆盖受保护的函数 _beforeToHtml() 并更改
if ($sort = $this->getSortBy()) {
$toolbar->setDefaultOrder($sort);
}
到
$collection->addAttributeToSort('news_from_date','desc');
或者可以观察'catalog_block_product_list_collection'并在那里改变排序。这些只是建议,但我可以看到问题直接在 _beforeToHtml() 和工具栏中。