Сегодня хочу поговорить об одной, довольно неприятной проблеме, которая существует у моего любимого движка для интернет-магазинов — Vamshop (версий 1. **) И о способе решения этой проблемы. Не знаю, насколько это правильное решение и не чревато ли оно другими неприятностями, тем не менее, у себя в магазине я его внедрил и успешно работаю. Да и решение это, пока что единственное. Я озвучивал проблему на форуме поддержки, но действенных советов на эту тему, на сегодняшний день, не оказалось. Итак, приступим!
Проблема с корзиной vamshop
Проблема заключается в следующем. Корзина, вернее отправленный в неё посетителем товар, хранится некоторое время, а потом исчезает. Причём, для гостей и для зарегистрированных пользователей, время, по истечении которого корзина очищается — разное. Если корзина зарегистрированного пользователя хранится достаточно долгое время, то корзина гостя очищается очень быстро, что не может считаться нормальным в сегодняшних реалиях. Наверняка вам доводилось покупать в интернет-магазинах. И наверняка хоть раз, да была ситуация, когда вы, по каким-то причинам, положив товар в корзину, не завершили покупку, а отошли от компьютера. Ну или решили заглянуть на другие аналогичные магазины, чтобы удостовериться, что выбрали лучшее предложение. В таких случаях, вернувшись в магазин, чтобы наконец оформить покупку, вы можете успешно это сделать, но можете и столкнуться с такой неприятностью, как очищенная в ваше отсутствие корзина. Если вы покупали один товар, наверное несложно снова положить его в корзину и оформить заказ. А если товарных позиций было десятки и они разбросаны по разным разделам каталога? Самые терпеливые оформят заказ повторно, но какая-то часть покупателей уйдёт в более удобный магазин. Тем самым, эта недоработка отрицательно сказывается на уровне наших продаж и не имеет права на существование! Давайте её исправлять!
Исправляем исчезающие из корзины vamshop товары
Для исправления ситуации, мы будем править следующие файлы:
htaccess
inc/vam_setcookie.inc.php
includes/application_top.php
И не забывайте делать бэкапы файлов перед их правкой. На мой взгляд, правки простые и напортачить тут вы не сможете, но бережёного, как говорится, Бог бережёт.
Открываем файл htaccess, находящийся в корне сайта и, где-нибудь между тегами
<IfModule mod_php5.c>
</IfModule>
добавляем строку
php_value session.gc_maxlifetime 432000
Далее, открываем файл inc/vam_setcookie.inc.php и ищем в нём фрагмент
$expire = 0,
Меняем в нём ноль на 432000. У нас должно получиться:
$expire = 432000,
В файле includes/application_top.php
В строке
session_set_cookie_params(0, $cookie_info['cookie_path'], $cookie_info['cookie_domain']);
Меняем значение ноль на 432000 — вот так:
session_set_cookie_params(432000, $cookie_info['cookie_path'], $cookie_info['cookie_domain']);
В строке
ini_set('session.cookie_lifetime', '0');
Меняем ноль на 432000. Вот так:
ini_set('session.cookie_lifetime', '432000');
После строк
// start the session
$session_started = false;
Добавляем
ini_set('session.gc_maxlifetime', '432000');
//print_r(ini_get_all());
Всё. Теперь гостевая корзина будет храниться значительно дольше. Значение 432000, встречающееся во всех этих правках, можно заменить своим. Это значение в секундах. В данном случае стоит значение 5 суток. Именно столько в пяти сутках секунд.