Как правильно изменить цену в корзине?

Добрый вечер!

Помогите, пожалуйста, разобраться с задачей!!!

На товаре указана цена за 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']);

Цена товара выводится правильно, но если увеличить количество, то итоговая стоимость неправильно рассчитывается.
Причем, если корзину обновить, то в значение итоговой стоимости изменяется на верное.

Подскажите, пожалуйста, как правильно сделать и исправить ошибку?
Ника
13 декабря 2018, 19:20
modx.pro
2
2 559
0

Комментарии: 4

Павел Романов
13 декабря 2018, 20:04
+1
Не надо вносить никаких изменений в сниппеты — они затрутся при обновлении.
Можно расширить класс корзины, но в Вашем случае проще создать плагин на событие msOnBeforeAddToCart.

//....
    if($product->get('weight') > 0){
        $price = $product->get('price') * $product->get('weight');
     } else {
        $price = $product->get('price');
    }
    $product->set('price', $price);
    $product->save();
//....
    Ника
    14 декабря 2018, 08:25
    0
    Спасибо, сработало!!!
      Максим
      28 ноября 2019, 10:27
      0
      В этом случае цена у товара перезаписывается в админке, можно ли как то сделать чтобы новая цена распространялась лишь на корзину, не затрагивая товар?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4