我想对已加载的产品集合进行排序
$_productCollection = $this->getLoadedProductCollection();
在管理Magento的默认排序是风格属性
首先按样式排序,然后按颜色排序,最后按名称排序。
我试过了
$_productCollection->setOrder(array('style', 'color','name'), asc);
且还
$_productCollection->addAttributeToSort('color', Varien_Data_Collection::SORT_ORDER_ASC);
$_productCollection->addAttributeToSort('name', Varien_Data_Collection::SORT_ORDER_ASC);
但没有工作。
默认排序工作正常。有人能帮忙吗?
6条答案
按热度按时间bfnvny8b1#
您可以这样做:
这样,集合将被强制重新加载,然后应用自定义排序。
0g0grzrc2#
您还可以克隆已加载的集合,然后根据需要修改查询。
//复制目前的集合。修改集合的较佳方式
//取消设定目前的coolection并附加您的自订筛选条件。
bvpmtnay3#
这里或其他地方都没有对我起作用。无论我怎么尝试,它都不会使用'getLoadedProductCollection()a对/Magento_Catalog/templates/product/list.phtml进行排序。还有一个奇怪的问题,在清除缓存后,产品会消失,直到重新索引完成。不知道那里发生了什么,有些事情不对劲。
所以我让它在下面的黑客方式工作(是的,我知道这不是“最佳实践”使用对象管理器,但它是唯一的工作!!)
wpx232ag4#
如果您的集合中有需要更高级排序/排序的产品,您可以将产品移到一个assoc数组中,这样您可以更容易地按照自己的意愿排序/排序。一旦顺序符合您的意愿,您就可以将它们添加回去,方法是首先使用$collection-removeAllItems()清除您的集合,然后使用$product迭代您的数组,并使用$collection-〉addItem($product)将每个产品移回集合;
我用这个当我想要一个粘性,不是由不同的排序/排序触摸。
dm7nw8vv5#
您可以在集合上使用setOrder对任何集合数据进行排序,如下所示:
其中,id可以替换为列名,第二个参数可以根据需要为DESC & ASC。
41ik7eoe6#
使用以下命令使其在v2.3.7中运行