Магенто. Сортировка коллекции продуктов по позиции


У меня есть коллекция продуктов.

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

В панели администратора в каталоге ->Управление категориями ->Товары категории у меня есть позиция для каждого товара. Как я могу отсортировать $_products по позиции ?

Author: user3162709, 2015-10-03

3 answers

Если вы хотите отсортировать товары по позиции в категории $category_id. вы можете использовать следующее

//Load the category model

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

$products_list = $category->getData();

Вы получите все товары, отсортированные по позиции в этой категории $category_id

 3
Author: Arun Krish, 2015-10-03 13:12:30

Вам нужно добавить категорию, в которой вы задаете позиции для товаров, в качестве фильтра для коллекции

$category = Mage::getModel('catalog/category')->load($categoryId);
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addCategoryFilter($category);
$collection->addAttributeToSort('position', 'ASC');
 2
Author: Denis, 2015-10-03 13:16:57

Я создал отдельное расширение, которое создает новый атрибут продуктов с именем "позиция". В этом расширении я создал наблюдателя, который сохраняет событие категории прослушивания. Поэтому, когда администратор сохраняет категорию в моем наблюдателе, я получаю каждую позицию и устанавливаю свой атрибут "позиция" для каждого продукта. И, наконец, я могу сортировать коллекцию продуктов по атрибуту "позиция" (продукт).

 0
Author: user3162709, 2015-10-04 22:14:10