Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php magento按子类别覆盖产品列表的排序顺序_Php_Magento - Fatal编程技术网

Php magento按子类别覆盖产品列表的排序顺序

Php magento按子类别覆盖产品列表的排序顺序,php,magento,Php,Magento,我正在用1.4.1建立一个新的商店 我正在尝试按产品所属的子类别对列表中的产品进行排序。在list.phtml的顶部是 $_productCollection=$this->getLoadedProductCollection(); 我尝试通过添加行来添加排序过滤器 $_productCollection->setOrder('category_ids', 'asc')->setOrder('name', 'asc'); 我还尝试了addAttributeToSort而不是

我正在用1.4.1建立一个新的商店

我正在尝试按产品所属的子类别对列表中的产品进行排序。在list.phtml的顶部是

$_productCollection=$this->getLoadedProductCollection();
我尝试通过添加行来添加排序过滤器

$_productCollection->setOrder('category_ids', 'asc')->setOrder('name', 'asc');
我还尝试了addAttributeToSort而不是setOrder。这似乎没有任何效果。我猜$\u productCollection不是我可以用这种方式排序的模型。我一直在四处挖掘,试图找到应用排序方法的正确位置,但没有成功


有人能告诉我在哪里做这件事吗

getLoadedProductCollection
的调用来自哪里?可以肯定的是(根据集合的名称),在您取回集合时集合已经加载(例如,SQL已经执行)。这意味着您限制/排序的机会已经结束

该方法的另一个版本可能尚未加载。如果可能的话,用那个

谢谢,
Joe

你说得对Joseph,SQL进入/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php,按“公共函数addAttributeToSort”搜索

但是做这种事情的代码我拿不到

只记得将de new Collection.php保存在路径/app/code/local/Mage/Catalog/Model/Resource/Eav/Mysql4/Product上,以避免更新时出现问题

如果您意识到de代码,请发布


我从这里开始尝试。

$this->getLoadedProductCollection()

只返回块从后端返回的产品集合

如果要为产品集合添加一些自定义代码,请编辑文件夹层次结构下的文件

app/code/core/Mage/Block/catalog/product/list.php

您将找到相同的命名函数,即
getLoadedProductCollection()
跟踪其工作情况,最后您将找到解决方案。

执行SQL后,是否应该有一种方法对集合进行排序?我认为如果我使用的不是getLoadedProductCollection,那么我必须重写产品列表的工作方式。在集合已经加载之后进行排序的概念是有问题的。考虑安装5k产品。前30种产品的集合有AA到AK。如果你把它们按相反的顺序排序,大多数人心里想的是ZZ-ZA,但实际上你会把AK变成AA。如果要手动排序,请将它们复制到数组并使用ksort。