Персчет корзины Shopkeeper без перезагрузки

Делаю пересчет корзины, для того, чтобы при изменении кол-ва товара, изменялось количество тары.
На событие OnSHKcalcTotalPrice повесил плагин

$e = &$modx->Event;
$output = <a name="cut"></a>  "";

if($e->name=='OnSHKcalcTotalPrice'){
	if(isset($_SESSION['purchases'])){
		$purchases = unserialize($_SESSION['purchases']);
		//смотрим покупки, проверяем фасовку и рассчитываем тару
		foreach($purchases as $i => $goods) {
                    //обрабатымаем массив $purchases, изменяем количество тары
                }
		$_SESSION['purchases'] = serialize($purchases);
                
                //для обновления состояния корзины
		$_POST['shk_recount']=1;
	}
}

количество тары корректно пересчитывается, но обновляется оно только при следующем обновлении корзины.
Как заставить корзину пересчитаться целиком?

1 комментарий

avatar
ответу сам на свой вопрос. Ничего умнее не придумал как добавить в таблицу system_eventnames событие OnSHKbeforeCartLoad

а в файлик class.shopkeeper.php в функцию getCartContent

function getCartContent($orderFormPage,$thisPage){
    $chunk = explode('<!--tpl_separator-->',$this->fetchTpl($this->config['cartTpl']));
    if(!empty($_SESSION['purchases'])){
      $evtOut = $this->modx->invokeEvent('OnSHKbeforeCartLoad');

и повесил плагин на это событие

if($e->name=='OnSHKbeforeCartLoad'){
    if(isset($_SESSION['purchases'])){
        $purchases = unserialize($_SESSION['purchases']);
Комментарий отредактирован 2018-06-19 14:54:46 пользователем uin23
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.