Php Magento按实体ID降序排序

Php Magento按实体ID降序排序,php,magento,Php,Magento,我希望修改默认的Magento(1.6)目录排序,添加一个按产品实体ID排序的选项,然后将其设为默认排序 (搜索了StackOverflow和Google,但只能找到适用于旧版本Magento或编辑核心文件的解决方案。) 提前谢谢 这是一篇很好的文章,提供了有关如何筛选和排序集合的信息。在不更改任何核心文件的情况下,最好的方法是复制位于以下位置的Toolbar.php文件: /app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php 然

我希望修改默认的Magento(1.6)目录排序,添加一个按产品实体ID排序的选项,然后将其设为默认排序

(搜索了StackOverflow和Google,但只能找到适用于旧版本Magento或编辑核心文件的解决方案。)


提前谢谢

这是一篇很好的文章,提供了有关如何筛选和排序集合的信息。

在不更改任何核心文件的情况下,最好的方法是复制位于以下位置的Toolbar.php文件:

/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php
然后在以下目录下创建一个新的目录路径(如果尚未创建):

现在替换第232行中的以下内容:

    if ($this->getCurrentOrder()) {
        $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
    }


最后,在你的Magento后端和你的ready to go上重新索引和刷新缓存。

为什么你要按一个属性排序,这个属性是因为存储方案而存在的,并且只应该在存储方案的上下文中使用?@benmarks,请详细说明,我真的很好奇为什么这会是糟糕的编码。ID永远不会改变,按ID降序排序总是首先给我最新的产品,这就是我要找的。谢谢。回答如下:-)另外:这应该适用于所有上下文,还是只适用于带有工具栏的产品列表块(即类别和目录搜索页面)?
    if ($this->getCurrentOrder()) {
        $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
    }
if ($this->getCurrentOrder()) {
if(($this->getCurrentOrder())=='position'){ //defines the sort option
//sort by entity_id (descending)
$this->_collection->addAttributeToSort('entity_id','desc');
} else {
$this->_collection->setOrder($this->getCurrentOrder(),$this->getCurrentDirection());
}
}