Для совместной продажи весового и штучного товара необходимо програмно изменять значение выбора кол-ва у элемента цены и в самой корзине. Для этого изначально необходимо иметь признак весового товара (делаем это через простой элемент текст в который заносим признак например "Вес"), далее идем в сам элемент кол-ва цены
\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);
}