线上购物.按位置对产品集合进行排序


Magento. Sort products collection by position

我有产品集合

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

在管理面板目录->管理类别->类别产品我有每个产品的位置。

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

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

您需要添加类别,其中您为产品设置位置,作为集合的过滤器

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

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