Однократное добавление товара в корзину ubercart

Аватар пользователя radhab20 radhab20 23 июля 2017 в 10:55

Здравствуйте, друзья. Нужно реализовать следующее: допустим человек указал кол-во товара 4 и нажал добавить в корзину. Это добавит 4шт. А если потом изменит кол-во на 5 и обратно нажмёт добавить в корзину тот же товар, то второй товар складывается к первому, итого 9. Нужно сделать чтобы при повторном клике предыдущее значение обнулялось, чтобы в корзине было только 5 товаров. Это же относится и при двукратном нажатии на "добавить в корзину". Нужно чтобы последующие значение перезаписывали предыдущие. Может придётся немного править модуль корзины, но в этом я не силён, поэтому обратился к сообществу..

Спасибо за внимание.

0 Thanks

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 24 июля 2017 в 7:41

Логика доавления правильная. Если Вы хотите менять, вам придется хукнуть функциою добавления в корзину убера, стоит ли овчинка выделки решать Вам.

Аватар пользователя radhab20 radhab20 24 июля 2017 в 16:25

Клиент требуется, поэтому надо сделать. Думаю над реализацией.. Небольшой опыт в разработке модулей есть. Тут спрашивал на тот случай, если кто либо уже сталкивался с подобной задачей и предложит удачное решение.

Аватар пользователя dgastudio dgastudio 24 июля 2017 в 16:38

hook_uc_add_to_cart
получить айдишник и кол-во добавленного товара.
если такой товар есть в корзине, вычесть кол-во.

Аватар пользователя laconical laconical 21 марта 2018 в 15:24

Для восьмерки есть хук:

<?php
function hook_uc_add_to_cart($nid$qty$data) {
  if (
$qty 1) {
    
$result[] = array(
      
'success' => FALSE,
      
'message' => t('Sorry, you can only add one of those at a time.'),
    );
  }
  return 
$result;
}
?>

Вопрос: Как проверить "если такой товар есть в корзине"

Аватар пользователя radhab20 radhab20 30 июля 2017 в 15:48

В общем сделал вот что: просто закоментировал одну строчку (в моём случае 1203-я) в файле uc_cart.module . Вот эту //$qty += $item_entity->qty;
Согласен, решение не очень.. При обновлении модуля перезапишется