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