Магенто. Сортировка коллекции продуктов по позиции
У меня есть коллекция продуктов.
$_products = Mage::getModel('catalog/product')->getCollection();
В панели администратора в каталоге ->Управление категориями ->Товары категории у меня есть позиция для каждого товара. Как я могу отсортировать $_products по позиции ?
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
Вам нужно добавить категорию, в которой вы задаете позиции для товаров, в качестве фильтра для коллекции
$category = Mage::getModel('catalog/category')->load($categoryId);
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addCategoryFilter($category);
$collection->addAttributeToSort('position', 'ASC');
Я создал отдельное расширение, которое создает новый атрибут продуктов с именем "позиция". В этом расширении я создал наблюдателя, который сохраняет событие категории прослушивания. Поэтому, когда администратор сохраняет категорию в моем наблюдателе, я получаю каждую позицию и устанавливаю свой атрибут "позиция" для каждого продукта. И, наконец, я могу сортировать коллекцию продуктов по атрибуту "позиция" (продукт).