как заставить мультимагазин opencart использовать одну и ту же корзину для нескольких TLD?

У меня есть следующий сценарий:

  • domain1.com - store1 - установлен opencart 1.5.6
  • domain2.com - store2
  • domain3.com - store3

Мне удалось установить все 3 магазина на разных доменах, и все они используют одну и ту же установку opencart (store1). Пока вроде все работает правильно. Что мне нужно, так это когда пользователь находится на domain1.com, добавляет product1 в свою корзину, затем переходит в store2 (domain2.com) и добавляет товар2 в свою корзину — теперь он должен иметь как товар1 из shop1, так и товар2 из shop2< /em> в своей тележке. Другими словами, все магазины должны вести себя как один, если пользователь вошел в магазин1, тогда он должен сохранить сеанс входа в систему, свою корзину и все другие параметры при переходе в магазин2 или store3.

Есть ли способ добиться этого?

ПРИМЕЧАНИЕ. Я знаю, как этого добиться, если магазины установлены в нескольких поддоменах, но не используют разные домены.


person Alex Sutu    schedule 27.11.2013    source источник
comment
forum.opencart.com/viewtopic.php?t=65950 — эта ссылка может помочь вам.   -  person Sankar V    schedule 28.11.2013


Ответы (1)


Я только что нашел решение этой проблемы, поэтому вот что я сделал:

Я изменил /system/library/session.php следующим образом:

if ($_SERVER['HTTP_HOST'] != 'store1.loc') {
   if (!isset($_COOKIE["PHPSESSID"]) && !isset($_GET['session_id'])) { 
      $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";//get current URL
      header('Location: http://store1.loc?getsession=true&url='.base64_encode($actual_link));
   }
   elseif (isset($_GET['session_id'])) { //set session based on the session_id received from main store
      session_destroy();
      session_id($_GET['session_id']);
      session_start();
      header('Location: '. base64_decode($_GET['url'])); //redirect to original requested url
   }
}
else {
   if (isset($_GET['getsession'])) { //send back session_id
      header('Location: http://store2.loc?session_id='.urlencode(session_id()) . '&url=' . $_GET['url']);
   }
}

Объяснение: если пользователь входит в любой магазин, не являющийся основным магазином, выполняется перенаправление в основной магазин, запускается сеанс, если он отсутствует, затем идентификатор сеанса отправляется обратно запрашивающему через GET. параметр в URL-адресе, затем сеанс запускается с использованием того же идентификатора сеанса, а затем перенаправляется обратно на исходный запрошенный URL-адрес. Недостатком этого является тот факт, что когда пользователь впервые посещает store2, загрузка страницы будет как минимум вдвое из-за редиректов.

person Alex Sutu    schedule 29.11.2013