Подскажите как правельно изменить цены на товары в корзине в зависимости от от ее общей суммы ?
Читал что это нужно сделать с помощью Rules. Но у меня на этом этапе возникают проблемы (не подходят условия из тех что есть и др.)
Можно ли программно изменить цены на товары в корзине?
Комментарии
line item api , не знаю поможет ли вам это
За ответ спасибо, но изменяя цену line item (с сохранением ордера и самих line items) сумма корзины возвращается в изначальному состоянию. Видимо в модуле есть защита от прямого изменения цены.
Я говорю сейчас про хуки и программное изменение item-oв и корзины. Потому решил поступить как рекомендуют на сайте разработчика commerce.
Нашел решение.
После нескольких дней рытья в коде ядра commerce выяснилось, что цены сбрасывается в модуле commerce_cart в функции
commerce_cart_order_refresh()
, а вызывается она вcommerce_cart_commerce_order_load()
(реализация хука_commerce_order_load()
).В commerce_cart_order_refresh() после пересчета и исправления цен (исправляется
base_price
, если она не совпадает с ценой товара) происходит вызов всех реализацийhook_commerce_cart_order_refresh()
вот тут то и можно производить изменения цены line_item.Знаю что это не лучший вариант решения вопроса но я не разобрался как пользоваться ценами в commerce. Видел что есть тип цены discount но не понял как он срабатывает на программном уровне (какой должна быть цена чтоб добавился дисконт к общей цене).
Rules считаю уродством данного модуля, ведь он называется фреймворком для разработки решений для электронной коммерции. Ну конечно это мое личное мнение.
Может быть кто знает как использовать типы цен для формирования unit_price? поделитесь.