Jump to content

Recommended Posts

Всем привет!

Подскажите, пожалуйста, как сделать время жизни товара в корзине вечным (ну или хотя-бы 1 год)?

Я заметил, что у меня товар в корзине живет максимум сутки, а иногда и меньше. Куки не чищу.

 

Хочется, чтобы покупатель, зайдя на сайт в любое время, видел товар в корзине, добавленный им. 

Также планирую использовать email-рассылки по брошенным корзинам. 

Share this post


Link to post
Share on other sites

Сессия удаляется сразу при закрытии браузера (по умолчанию). А с параметром session_set_cookie_params(2592000, '/'); из ссылки предыдущего ответа - будет жить месяц. 

Если поставите год и у хорошая посещаемость - в папке sessions в корне скопятся сотни тысяч фалов сессии. Весят они мало.

Share this post


Link to post
Share on other sites

Установил параметр для сессии, корзина все-равно очищается.

На яндекс-маркете можно через год зайти и товар в корзине будет. 

Подскажите что я делаю не так?

Share this post


Link to post
Share on other sites

>> Подскажите что я делаю не так?

не тратите миллиарды на разработку/поддержку.

Share this post


Link to post
Share on other sites

Спасибо за содержательный ответ.

А решить проблему на нашем движке можно?

Share this post


Link to post
Share on other sites

у зарегистрированных покупателей "корзина" сохраняется в базу при выходе (logout).

на все остальное вы повлиять не можете (настройки браузера/переустановленная система/другой девайс/другой браузер/...).

Share this post


Link to post
Share on other sites

А если один девайс и тот-же браузер и пользователь не зарегистрирован?

Корзина хранится сейчас. Но она хранится пару часов, а нужно, например, 6 месяцев. Это же кука где-то выдается. Понять бы какая и где?

Share this post


Link to post
Share on other sites

Корзина хранится в сессии, и ее жизнь определяется жизнью сессии

Share this post


Link to post
Share on other sites

это, блин, печально :(

А ведь какие возможности открылись бы по возвращению покупателей на сайт, путем рассылки им брошенных корзин. Бросил корзину -  получай серию писем! 

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

Share this post


Link to post
Share on other sites

Если у вас каким-то образом есть полученная почта клиента, то можно к ней и товары из корзины привязать, а потом письмо с этими товарами послать, и товары хранить хоть до следующего века. 

 

Но если у вас только товары в сессии - кому вы будете письма-то слать?

Share this post


Link to post
Share on other sites

а я и не буду слать

есть достаточно много сервисов, которые это сделают за меня. И сделают хорошо.

Словить email пользователя и передать куда надо - не проблема. 

 

Привязка товаров к email возможна, если пользователь потом войдет в магазин со своей учеткой.

 

Идеальный вариант - куки 

хранить в куке ID корзины, саму корзину хранить в БД и подтягивать из базы для определенной куки.

 

Странно, что этот функционал настолько убог в нашей CMS :(

Share this post


Link to post
Share on other sites

Хм... ну... если вы знаете как, то сделайте это для своего магазина. :(

Share this post


Link to post
Share on other sites

Придется делать видимо :(

Ну как, сделали??

Share this post


Link to post
Share on other sites

тут про полгода жизни корзины говорят, но это наверное странно и бессмысленно, за пол года товар изменится и цена на него тоже. Пару недель ещё куда не шло.

Share this post


Link to post
Share on other sites

Я с такой же проблемой столкнулся. Поставил время жизни сессии 1 месяц. В результате сессия админки держится, а корзина сбрасывается через 1 час. Кто то смог настроить на ОС 2.2.?

Share this post


Link to post
Share on other sites

Проблема решена так:

 

Для опенкарта 2.2: здесь /system/library/session.php меняем значение в строке

session_set_cookie_params(0, '/');

на

session_set_cookie_params(60*60*24, '/');

А также вот здесь: /system/library/cart/cart.php меняем значение в строке $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); на вот такое:

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 24 HOUR)");

Для других версий примерно такая-же процедура. Пути могут немного отличаться.

  • +1 4

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.