【问题标题】:how to make opencart multi-store share same cart over multiple TLDs?如何使 opencart 多商店在多个 TLD 上共享同一个购物车?
【发布时间】:2013-11-27 20:50:52
【问题描述】:

我有以下场景:

  • domain1.com - store1 - opencart 1.5.6 已安装
  • domain2.com - store2
  • domain3.com - store3

我设法在不同的域上安装了所有 3 个商店,并且它们都使用相同的 opencart 安装 (store1)。到目前为止,一切似乎都正常工作。我需要的是当用户在 domain1.com 上时,将 product1 添加到他的购物车中,然后导航到 store2 (domain2.com) 和在他的购物车中添加 product2 - 现在他应该同时拥有来自 shop1product1 和来自 shop2product2 /em> 在他的购物车里。换句话说,所有商店都应该表现得像一个,如果用户登录到 store1,那么当他导航到 store2 时,他应该保留他的登录会话、购物车和所有其他选项em> 或 store3

有什么办法可以做到吗?

注意:如果商店安装在多个子域中,但不使用不同的域,我知道如何实现这一点。

【问题讨论】:

标签: session-cookies opencart cart


【解决方案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']);
   }
}

说明:如果用户进入任何不是主商店的商店,则重定向到主商店,如果不存在,则启动会话,然后将会话 ID 发送回请求者通过 url 中的 GET 参数,然后使用相同的会话 id 启动会话,然后它重定向回原始请求的 URL。这样做的缺点是,当用户第一次访问 store2 时,由于重定向,页面加载至少会增加一倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2015-06-01
    • 2023-01-31
    相关资源
    最近更新 更多