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 Комментариев
Что-бы оставить свой комментарий Вы должны авторизоваться на сайте
x
Тема пуша
Сообщение пуша
Наверх
Отправить заявку
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных