洋红色。按位置对产品 collection 进行排序

Magento. Sort products collection by position

我有产品collection。

$_products = Mage::getModel('catalog/product')->getCollection();

在目录->管理类别->类别产品的管理面板中,我有每个产品的位置。 如何按位置对 $_products 进行排序?

如果您想按类别 $category_id 中的位置对产品进行排序。您可以使用以下

//Load the category model

 $category = Mage::getModel('catalog/category')->load($category_id)
             ->getProductCollection()
             ->addAttributeToSort('position', 'ASC');

$products_list = $category->getData();

您将获得按该类别 $category_id

中的位置排序的所有产品

您需要添加类别,在其中设置产品的位置,作为 collection

的过滤器
$category = Mage::getModel('catalog/category')->load($categoryId);
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addCategoryFilter($category);
$collection->addAttributeToSort('position', 'ASC');

我创建了单独的扩展,它创建了名称为 'position' 的新产品属性。在这个扩展中,我创建了监听类别保存事件的观察者。因此,当管理员在我的观察者中保存类别时,我得到每个位置并为每个产品设置我的属性 'position'。最后我可以按 'position'(product) 属性对产品集合进行排序。