Куда идем?

автоматическая очистка корзины после Logout

Больше
13 года 4 мес. назад #1066 от ininna
Здравствуйте,
Помогите, пожалуйста. Обыскала весь интернет, но нигде не нашла ответа. Мне попался очень капризный клиент, магазин, который я сделала для него, работает отлично. Но его не устраивает одна вещь. Проблема в следущем:

Покупатель сделал Login, выбрал несколько товаров и положил из в корзину. Потом передумал их покупать, не закончил оформление заказа и вышел из магазина Logout. Как сделать, чтобы когда этот покупатель вновь зайдет в магазин (Login), его корзина была ПУСТОЙ, а не показывала товары, которые он выбрал, но не купил при своем предыдущем посещении магазина? То есть как сделать, чтобы корзина автоматически очищалась после того, как покупатель, не закончив оформление заказа, вышел (Logout) из магазина?

Очень надеюсь на Вашу помощь.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
13 года 4 мес. назад #1070 от Wedal
Спасибо сказали: ininna

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
13 года 4 мес. назад #1073 от ininna
Огромное спасибо за помощь. Линки, которые Вы написали, очень помогли. Там дали решение для старой версии Virtuemart, но все равно подсказали, где искать.
У меня 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

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.