События (хуки) и др

https://www.hostcms.ru/documentation/modules/core/events/

1. Хуки для контроллеров корзины

Т.к. в корзине в 1 шаг все блоки подгружаются ajax и для облегчения интеграции (исключаем работу в ТДС) их формирование идет в файле MegaPost_Command_Controller, который нельзя модифицировать, но можно использовать хуки (подробнееarrow-up-right)

// хук для доступа к Shop_Cart_Controller_Show
class My_MegaPost
{
    static public function onBeforeCartShow($controller, $args)
    {
        $Shop_Cart_Controller_Show = $args[0];
        
        $Shop_Cart_Controller_Show
            ->itemsProperties(FALSE)
            ->checkStock(TRUE);
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforeCartShow', array('My_MegaPost', 'onBeforeCartShow'));

// хук для доступа к MegaPost_Shop_Delivery_Controller_Show
class My_MegaPost
{
    static public function onBeforeDeliveryShow($controller, $args)
    {
        $Shop_Delivery_Controller_Show = $args[0];
        
        $Shop_Delivery_Controller_Show
            ->shopDeliveries()
                ->queryBuilder()
                    ->where('shop_deliveries.id','NOT IN', array(123))
		    ->setOr()
		    ->where('shop_deliveries.id','IN', array(456));
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforeDeliveryShow', array('My_MegaPost', 'onBeforeDeliveryShow'));

// хук для доступа к Shop_Payment_System_Controller_Show
class My_MegaPost
{
    static public function onBeforePaymentSystemShow($controller, $args)
    {
        $Shop_Payment_System_Controller_Show = $args[0];
        
        $Shop_Payment_System_Controller_Show
            ->shopPaymentSystems()
                ->queryBuilder()
                    ->where('shop_payment_systems.id','NOT IN', array(123))
		    ->setOr()
		    ->where('shop_payment_systems.id','IN', array(456));
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforePaymentSystemShow', array('My_MegaPost', 'onBeforePaymentSystemShow'));

2. Остаток на складе

Указать для корзины для всего сайта без хуков и ТДС проверку остатка на складе, можно разместив в файле bootstrap.php следующий код

3. Изменение данных расчета доставок

Данный хук позволяет для каждого расчета, получить и изменить данные перед передачей в корзину или вовсе не выводить его (нужно вернуть FALSE)

Последнее обновление