Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Починить корзину в мультимагазине на ocStore 2.1.0.2


Recommended Posts

Если не авторизуешься или авторизуешься в одном из двух магазинов - корзина работает нормально

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

 

Магазин www.new.kz.shuncheng-truck.com     www.new.shuncheng-truck.com

Тестовый клиентский вход - логин : [email protected]  пароль: DEMO

 

нашел вот это в index.php

// Session
if (isset($request->get['token']) && isset($request->get['route']) && substr($request->get['route'], 0, 4) == 'api/') {
	$db->query("DELETE FROM `" . DB_PREFIX . "api_session` WHERE TIMESTAMPADD(HOUR, 1, date_modified) < NOW()");

	$query = $db->query("SELECT DISTINCT * FROM `" . DB_PREFIX . "api` `a` LEFT JOIN `" . DB_PREFIX . "api_session` `as` ON (a.api_id = as.api_id) LEFT JOIN " . DB_PREFIX . "api_ip `ai` ON (as.api_id = ai.api_id) WHERE a.status = '1' AND as.token = '" . $db->escape($request->get['token']) . "' AND ai.ip = '" . $db->escape($request->server['REMOTE_ADDR']) . "'");

	if ($query->num_rows) {
		// Does not seem PHP is able to handle sessions as objects properly so so wrote my own class
		$session = new Session($query->row['session_id'], $query->row['session_name']);
		$registry->set('session', $session);

		// keep the session alive
		$db->query("UPDATE `" . DB_PREFIX . "api_session` SET date_modified = NOW() WHERE api_session_id = '" . $query->row['api_session_id'] . "'");
	}
} else {
	$session = new Session();
	$registry->set('session', $session);
}

Настроил API и включил "Использовать Shared Sessions" начинают появляться записи в БД - но корзины все равно очищаются. Сейчас Shared Sessions отключены.

 

Такой же мультимагазин на том же хостинге на движке ocStore 1.5.5.1.2 работает нормально.

Надіслати
Поділитися на інших сайтах


Файл system\library\cart.php

закомментировать строку 18

//$this->db->query("UPDATE " . DB_PREFIX . "cart SET session_id = '" . $this->db->escape($this->session->getId()) . "' WHERE customer_id = '" . (int)$this->customer->getId() . "'");
 
  • +1 1
Надіслати
Поділитися на інших сайтах

Работает! Но если зайти на сайт с другого компьютера под тем же логином то корзины пустые - наверное так и должно быть ?

Попробовал аналогичную ситуацию на движке 1.5.5.1.2 - там товары положенные в корзину с другого ip есть - но в обоих магазинах одинаковые )) те что закинуты из главного магазина.

Надіслати
Поділитися на інших сайтах


Работает! Но если зайти на сайт с другого компьютера под тем же логином то корзины пустые - наверное так и должно быть ?

Да, так и должно быть с этими изменениями, корзина привязывается к сессии, мы закомментировали строку которая обновляет session_id для корзины, т.к. корзин у нас может быть несколько для одного пользователя.

Попробовал аналогичную ситуацию на движке 1.5.5.1.2 - там товары положенные в корзину с другого ip есть - но в обоих магазинах одинаковые )) те что закинуты из главного магазина.

в 1.5.x не смотрел, не знаю. Вообще странно, что у вас этой проблемы на 1.5.x не было
Надіслати
Поділитися на інших сайтах

Если у вас мультимагазин на ocStore 2.1.0.1 или 2.1.0.2 и товары в магазинах разные то вы получите проблему из первого сообщения этой темы.

Залогиненый в магазинах А и В клиент кидает товары в корзину магазина А - затем переходит в магазин В - при переходе поменяется сессия - и в таблице cart у всех накиданных в магазине А товаров обновится session_id на сессию магазина В - но в магазине В таких товаров не существует и корзина становится пустой.

Чтобы заработало как надо пришлось в таблице cart добавить столбец store_id для возможности обновлять session_id товаров с учетом принадлежности товара не только к клиенту но еще и к магазину. И поправить system\library\cart.php

Надіслати
Поділитися на інших сайтах


  • 1 year later...

efremovav, AlexChina, а есть ли у вас модуль общей корзины для 1.5.6.4.  - мультишоп с разными доменами, чтобы товар оставался при переходах в корзине, хотя на сайтах товар разный

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.