Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Нет в наличии - удалить из корзины


Recommended Posts

Доброго времени суток.
Интересует возможен ли ниже описанный функционал...

Например, накидал посетитель товаров в корзину и призадумался.... Да не на минутку призадумался, а на недельку. А в это время одна из позиций товара закончилась. Понятно , что человек не сможет оформить заказ, потому что товара не стало в наличии, но сама позиция в корзине то висит. И когда посетитель кидал товар в корзину то позиция была в наличии. И мало того , что ему и в голову не приходит что товар может закончится, так он ещё и не видит что там горят красные звёздочки, потому что он тупо не понимает ситуации, почему  у него нет кнопки ОФОРМИТЬ ЗАКАЗ.
Так вот хотелось бы узнать. Возможно ли сделать так чтобы товар автоматически удалялся с корзины при обнулении количества товара.

Как это сделано , например, на сайте katrin-artshop.com

Настоящим временем это проверить конечно не удастся. Ну может кто знаком с сайтом...

Link to comment
Share on other sites


3 минуты назад, prochet сказал:

По умолчанию срок жизни корзины (сессии) ограничен минутами...

И обнулится вся корзина?
Это не вариант.

 

Не знаю какие  у кого ограничения,  у меня несколько дней висит товар в корзине и ни какой срок жизни по умолчанию не страшен )

Edited by Allaur
Link to comment
Share on other sites


Добавить нужную проверку в класс корзины
\system\library\cart.php

Link to comment
Share on other sites


То есть готового решения этого вопроса нет...

48 минут назад, thentru сказал:

Добавить нужную проверку в класс корзины
\system\library\cart.php

Сколько будет стоить ваше решение?
vqmod   OS1.5x

Link to comment
Share on other sites


Вопрос поднялся у меня в теме, ответил там, перенесу сюда

 

Мне кажется это нужно делать в момент авторизации пользователя, просто добавить пару строк кода в класс покупателя: обход товаров в корзине, если наличие ноль - удаление. Всё же по опыту предвижу больше вопросов, нежели пользы. Когда товар добавляется в корзину, есть в миникорзине, но внезапно нет в заказе - это понятно владельцу магазина, так как он это включил через настройку. Но абсолютно непонятно пользователю, впервые попавшему на сайт. Это на самом деле довольно тонкий нюанс.

 

Например в файлах

 

\catalog\controller\account\login.php

\catalog\controller\checkout\login.php

 

добавить после строки

 

unset($this->session->data['guest']);

 

код

 

foreach ($this->cart->getProducts() as $product) {
  if (!$product['stock']) {
    $this->cart->remove($product['key']);
  }
}

  • +1 1
Link to comment
Share on other sites

1 час назад, deeman сказал:

Вопрос поднялся у меня в теме, ответил там, перенесу сюда

 

Мне кажется это нужно делать в момент авторизации пользователя, просто добавить пару строк кода в класс покупателя: обход товаров в корзине, если наличие ноль - удаление. Всё же по опыту предвижу больше вопросов, нежели пользы. Когда товар добавляется в корзину, есть в миникорзине, но внезапно нет в заказе - это понятно владельцу магазина, так как он это включил через настройку. Но абсолютно непонятно пользователю, впервые попавшему на сайт. Это на самом деле довольно тонкий нюанс.

 

Например в файлах

 

\catalog\controller\account\login.php

\catalog\controller\checkout\login.php

 

добавить после строки

 

unset($this->session->data['guest']);

 

код

 

foreach ($this->cart->getProducts() as $product) {
  if (!$product['stock']) {
    $this->cart->remove($product['key']);
  }
}


Благодарю. Протестирую, отпишусь.

=====================================

/catalog/controller/checkout/simplecheckout_login.php

сюда ещё добавил
не удаляется

Edited by Allaur
Link to comment
Share on other sites


  • 2 years later...

Тоже задался этим вопросом.

2 года прошло, может уже не актуально.

В

\system\library\cart.php

добавил

 

 

в массиве

$product_data[] = array(

 

'stock_status'    => $product_query->row['stock_status_id'],

 

и 

 

 

   public function hasPrice() {
        foreach ($this->getProducts() as $product) {
            if ($product['price'] == 0 && $product['stock_status'] == 5) {
                $query = $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int)$this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int)$product['product_id'] . "'");
            }
        }

        return true;
    }

 

также в файлах

 

\catalog\controller\checkout\cart.php

\catalog\controller\checkout\checkout.php

 

добавил проверку этого класса,

удаляется из корзины товар, если цена вдруг стала равна 0 (авторизован или нет)

Наколхозил, но работает 

Edited by vuraddo
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.