loader

Совместная продажа весового товара и штучного JBZoo

Для совместной продажи весового и штучного товара необходимо програмно изменять значение выбора кол-ва у элемента цены и в самой корзине. Для этого изначально необходимо иметь признак весового товара (делаем это через простой элемент текст в который заносим признак например "Вес"), далее идем в сам элемент кол-ва цены

\media\zoo\applications\jbuniversal\cart-elements\price\quantity\quantity.php

находим функцию interfaceParams и меняем ее содержимое на 

$item_id =$this->item_id; //Получаем id текущего товара
$item = $this->app->table->item->get($item_id); //Объект товара
$edizmer = $item->getElement('6d9f4034-0f73-4ea5-8b40-571fd838018d')->data()[0]['value'];// Значения поля с признаком товара
$edizmer = str_replace(' ', '', $edizmer);
if($edizmer=='Вес'){ return array( 'min' => $jbvars->number(0.1), 'max' => $jbvars->number(999999), 'step' => $jbvars->number(0.1), 'default' => $jbvars->number(0.1), 'decimals' => 2);
}else{ return array( 'min' => $jbvars->number($params->get('min', 1)), 'max' => $jbvars->number($params->get('max', 999999)), 'step' => $jbvars->number($params->get('step', 1)), 'default' => $jbvars->number($params->get('default', 1)), 'decimals' => $jbvars->number($params->get('decimals', 0)));
}

Все в карточке товара теперь у нас определяется шаг и десятичное значение кол-ва.

Для работы данной возможности в корзине, необходимо внести изменения в рендеринг вывода поля кол-ва и в сам класс корзины:

Открываем

\media\zoo\applications\jbuniversal\framework\helpers\jbhtml.php

Нам нужна функция function quantity в нее добавляем переменную $item=null и значение переменной $params меняем на:

if($item->id){ $edizmer = $item->getElement('6d9f4034-0f73-4ea5-8b40-571fd838018d')->data()[0]['value']; $edizmer = str_replace(' ', '', $edizmer);
}
if($edizmer=='Вес'){ $params = array( 'min' => 0.1, 'max' => 999999, 'step' => 0.1, 'default' => $default, 'decimals' => 2);
}else{ $params = array( 'min' => $this->_vars->number($params->get('min', 1)), 'max' => $this->_vars->number($params->get('max', 999999)), 'step' => $step, 'default' => $default, 'decimals' => $decimals,);
}

Далее открываем 

\media\zoo\applications\jbuniversal\framework\classes\cart\jborder.php

Находим функцию renderItems и меняем условие значения переменной $editMode на

if ($editMode) { $itemHtml['quantityEdit'] = $jbhtml->quantity($quantity, $cartItem->find('params._quantity', array()),'','','',$item);
}
0 Комментариев
Что-бы оставить свой комментарий Вы должны авторизоваться на сайте