Имеется магазин, где подключен компонент catalog. Каждый товар имеет несколько торговых предложений с разными ценами.
Необходимо сделать сортировку товаров по минимальной цене торгового предложения.
Изрядно покурив гугл, я пришел к выводу, что так просто эта задача не решается. В итоге принял решение добавить в товары свойство MIN_PRICE и написать обработчик, который по определенным событиям будет это поле обновлять. Вопрос к знатокам 1. Цена может обновляться при добавлении/редактировании/обновлении торговых предложений товара. Какие события за это отвечают ? 2. Судя по мануалу, минимальную цену должен считать CIBlockPriceTools::GetOffersArray , помещая ее в результирующий массив. Вызываю так:
Код
$arOffers = CIBlockPriceTools::GetOffersArray(
array("IBLOCK_ID"=>1), // id инфоблока
array($arFields["ID"]), // id элемента, предложения которого нужны
array(), // сортировка
array(), // выборка полей
array(), // выборка свойств
0, // макс количество возвращаемых записей. 0-все
CIBlockPriceTools::GetCatalogPrices(1, array("BASE")), // тип цены
"Y" // включение ндс
);
В $arOffers попадает массив торговых предложений. При этом, поле MIN_PRICE отсутствует. Что я делаю не так??
GetOffersArray считает минимальную цену не всего товара, а каждого торгового предложения в отдельности!
Получается, мин. цену товара нужно считать руками? Окей, костыль, но термимо...
Остается первый вопрос по поводу того, к каким событиям лучше привязаться для обновления свойства MIN_PRICE.
Может есть принципиально другой способ решения задачи сортировки товаров внутри раздела?? Я удивляюсь, почему такая типичная задача не решена в битриксе из коробки....