Как правильно изменить цену в корзине?
Добрый вечер!
Помогите, пожалуйста, разобраться с задачей!!!
На товаре указана цена за 1 кг. Упаковка весит 5 кг.
При добавлении в корзину, цена товара должна автоматически рассчитываться как price*weight
Я вношу изменения в сниппет " msCart"
Цена товара выводится правильно, но если увеличить количество, то итоговая стоимость неправильно рассчитывается.
Причем, если корзину обновить, то в значение итоговой стоимости изменяется на верное.
Подскажите, пожалуйста, как правильно сделать и исправить ошибку?
Помогите, пожалуйста, разобраться с задачей!!!
На товаре указана цена за 1 кг. Упаковка весит 5 кг.
При добавлении в корзину, цена товара должна автоматически рассчитываться как price*weight
Я вношу изменения в сниппет " msCart"
if ($product['weight'] > 0)
{
$product['price'] = $miniShop2->formatPrice($entry['price']) * $product['weight'];
}
else
{
$product['price'] = $miniShop2->formatPrice($entry['price']);
}
$product['cost'] = $miniShop2->formatPrice($entry['count'] * $product['price']);
Цена товара выводится правильно, но если увеличить количество, то итоговая стоимость неправильно рассчитывается.
Причем, если корзину обновить, то в значение итоговой стоимости изменяется на верное.
Подскажите, пожалуйста, как правильно сделать и исправить ошибку?
Комментарии: 4
Не надо вносить никаких изменений в сниппеты — они затрутся при обновлении.
Можно расширить класс корзины, но в Вашем случае проще создать плагин на событие msOnBeforeAddToCart.
Можно расширить класс корзины, но в Вашем случае проще создать плагин на событие msOnBeforeAddToCart.
//....
if($product->get('weight') > 0){
$price = $product->get('price') * $product->get('weight');
} else {
$price = $product->get('price');
}
$product->set('price', $price);
$product->save();
//....
Спасибо, сработало!!!
В этом случае цена у товара перезаписывается в админке, можно ли как то сделать чтобы новая цена распространялась лишь на корзину, не затрагивая товар?
Уберите
$product->save();
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.