Т.к. в корзине в 1 шаг все блоки подгружаются ajax и для облегчения интеграции (исключаем работу в ТДС) их формирование идет в файле MegaPost_Command_Controller, который нельзя модифицировать, но можно использовать хуки (подробнее)
// хук для доступа к Shop_Cart_Controller_ShowclassMy_MegaPost{staticpublicfunctiononBeforeCartShow($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_ShowclassMy_MegaPost{staticpublicfunctiononBeforeDeliveryShow($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_ShowclassMy_MegaPost{staticpublicfunctiononBeforePaymentSystemShow($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 следующий код
// Проверять остаток на складе при добавлении в корзину$bCheckStock =TRUE;$oShop_Cart_Controller =Shop_Cart_Controller::instance();$oShop_Cart_Controller->checkStock($bCheckStock);
3. Изменение данных расчета доставок
Данный хук позволяет для каждого расчета, получить и изменить данные перед передачей в корзину или вовсе не выводить его (нужно вернуть FALSE)
classMy_MegaPost{staticpublicfunctiononAfterHandlerObject($handler, $args) {list($object, $Megapost_Condition)= $args;// доставка ID 1 && курьер && тарифif($handler->shop_delivery_id ==1&& $objcet->type ==0&& $objcet->tariffId ==2) { $objcet->price =0; // изменим цену }returnNULL; // возвращает объект с данными расчета// return FALSE; // не возвращает расчет }}Core_Event::attach('Megapost_Handler.onAfterHandlerObject',array('My_MegaPost','onAfterHandlerObject'));