ИНТЕРНЕТ-МАГАЗИН / Округление цен в магазине

Заметка создана: 09 февраля 2025 г.

Централизованно округлить цены можно установкой формата округления для Shop_Controller. В файл bootstrap.php, в корне, добавьте для округления до десятых:

Shop_Controller::instance()->floatFormat("%.1f");


До целых:

Shop_Controller::instance()->floatFormat("%.0f");


Округление до тысяч, сотен, десятков
Чтобы цена товара в интернет-магазине не была отпугивающей, иногда нужно округлить её до целых десятков. Округление осуществляется с помощью хука на событие

Shop_Item_Controller.onAfterCalculatePrice, вносимого в bootstrap.php
class Shop_Price_Observer
{
    static public function round($price)
    {
        /*
        -3 — до тысяч
        -2 — до сотен
        -1 — до десятков
        */
        return round($price, -3);
    }
   
    static public function onAfterCalculatePrice($object, $args)
    {
        $aPrice = $object->getAPrice();
        $aPrice['price_discount'] = self::round($aPrice['price_discount']);
        $object->setAPrice($aPrice);
    }
}


Core_Event::attach('Shop_Item_Controller.onAfterCalculatePrice', array('Shop_Price_Observer', 'onAfterCalculatePrice'));