автоматическая очистка корзины после Logout
- ininna
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 2
- Спасибо получено: 2
13 года 4 мес. назад #1066
от ininna
ininna создал тему: автоматическая очистка корзины после Logout
Здравствуйте,
Помогите, пожалуйста. Обыскала весь интернет, но нигде не нашла ответа. Мне попался очень капризный клиент, магазин, который я сделала для него, работает отлично. Но его не устраивает одна вещь. Проблема в следущем:
Покупатель сделал Login, выбрал несколько товаров и положил из в корзину. Потом передумал их покупать, не закончил оформление заказа и вышел из магазина Logout. Как сделать, чтобы когда этот покупатель вновь зайдет в магазин (Login), его корзина была ПУСТОЙ, а не показывала товары, которые он выбрал, но не купил при своем предыдущем посещении магазина? То есть как сделать, чтобы корзина автоматически очищалась после того, как покупатель, не закончив оформление заказа, вышел (Logout) из магазина?
Очень надеюсь на Вашу помощь.
Помогите, пожалуйста. Обыскала весь интернет, но нигде не нашла ответа. Мне попался очень капризный клиент, магазин, который я сделала для него, работает отлично. Но его не устраивает одна вещь. Проблема в следущем:
Покупатель сделал Login, выбрал несколько товаров и положил из в корзину. Потом передумал их покупать, не закончил оформление заказа и вышел из магазина Logout. Как сделать, чтобы когда этот покупатель вновь зайдет в магазин (Login), его корзина была ПУСТОЙ, а не показывала товары, которые он выбрал, но не купил при своем предыдущем посещении магазина? То есть как сделать, чтобы корзина автоматически очищалась после того, как покупатель, не закончив оформление заказа, вышел (Logout) из магазина?
Очень надеюсь на Вашу помощь.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
13 года 4 мес. назад #1070
от Wedal
Wedal ответил в теме Re: автоматическая очистка корзины после Logout
ininna, сам не пробовал, но возможно поможет:
forum.virtuemart.net/index.php?topic=81463.0;prev_next=prev
forum.virtuemart.net/index.php?topic=58769.0
forum.virtuemart.net/index.php?topic=81463.0;prev_next=prev
forum.virtuemart.net/index.php?topic=58769.0
Спасибо сказали: ininna
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- ininna
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 2
- Спасибо получено: 2
13 года 4 мес. назад #1073
от ininna
ininna ответил в теме Re: автоматическая очистка корзины после Logout
Огромное спасибо за помощь. Линки, которые Вы написали, очень помогли. Там дали решение для старой версии Virtuemart, но все равно подсказали, где искать.
У меня Virtuemart 1.8, может кому-нибудь поможет мое решение.
В файле ps_cart.php (находится в administrator/components/com_virtuemart/classes) надо удалить строки 37-70.
У меня Virtuemart 1.8, может кому-нибудь поможет мое решение.
В файле ps_cart.php (находится в administrator/components/com_virtuemart/classes) надо удалить строки 37-70.
Code:
// If the user is logged in, we can try to retrieve the current cart from the database
// We store the items in a new SESSION var
if( $GLOBALS['auth']['user_id'] > 0 && empty($_SESSION['savedcart'])) {
$q = 'SELECT `cart_content` FROM `#__{vm}_cart` WHERE `user_id`='.$GLOBALS['auth']['user_id'];
$db->query( $q );
if( $db->next_record() ) {
// Fill the cart from the contents of the field cart_content, which holds a serialized array
$contents = $db->f('cart_content');
$contents = @unserialize( $contents );
if( $contents !== false ) {
$_SESSION['savedcart'] = $contents;
// Now check if all products are still published and existant
$products_in_cart = array();
for ($i=0;$i<$_SESSION['savedcart']["idx"];$i++) {
$products_in_cart[$_SESSION['savedcart'][$i]['product_id']] = (int)$_SESSION['savedcart'][$i]['product_id'];
}
if( !empty( $products_in_cart )) {
$db->query('SELECT product_id FROM #__{vm}_product WHERE product_id IN('.implode(',', $products_in_cart ).') AND product_publish=\'Y\'' );
while( $db->next_record() ) {
unset( $products_in_cart[$db->f('product_id')] );
}
foreach ( $products_in_cart as $product_id ) {
// Delete those products who have been unpublished or deleted meanwhile
ps_cart::deleteSaved( array('product_id'=>$product_id,'description'=>''), true);
}
}
// If Current cart is empty populate with saved cart
if(@$_SESSION['cart']['idx'] == 0) {
$_SESSION['cart'] = $_SESSION['savedcart'];
$_SESSION['savedcart']['idx'] = 0;
ps_cart::saveCart();
}
return $_SESSION['cart'];
}
}
}
Спасибо сказали: bionetinfo, kryon
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.