1

我想在由 Opencart 提供支持的商店中制作持久购物车。换句话说,如果用户将产品添加到购物车并且用户尚未登录。但是下次当客户在一周内再次访问网站时,他的产品应该在他的购物车中。

仅当用户从购物车或结帐中明确删除产品时或一周后才应删除产品。

我认为这可以通过使用cookies来完成?帮助将不胜感激

4

4 回答 4

3

有一个非常简单的方法可以做到这一点。

此修改适用于 OC 1.4.XX 和 OC 1.5.XX

这是如何完成的:

在主目录中,找到 system/library/session.php

你会发现一行写着:

session_set_cookie_params(0, '/');

对于 24 小时 cookie,将行更改为:

session_set_cookie_params(60*60*24, '/');

您将一分钟内的秒数乘以一小时内的分钟数乘以一天中的小时数,您希望将 cookie 设置为。

这不是一个真正的持久性 cookie,而是一个非常长的会话 cookie,正如 Jay Gilford 所指出的,使用 OpenCart 创建持久性 cookie 没有[简单] 方法,如果我们想办法做到这一点,我们会让你们都知道。并且因为 OpenCart 将此 cookie 视为会话 cookie,所以无论会话多长时间,只要 cookie 尚未过期,它就不会自动更新 cookie 为新的过期日期。

扩展会话 cookie 的一个无害的副作用是,当您登录到管理员页面而之前没有注销时,您会收到“无效令牌”消息。这是因为(扩展的)会话 cookie “记住”了您上次的管理员登录。只需忽略这一点并登录。不过还有另一个缺点,即如果产品价格发生变化,并且用户已经将该产品添加到购物篮中,用户将在 24 小时 cookie 中存储之前的价格。

像这样构建 OpenCart 的原因似乎是欧盟的隐私法,该法禁止持久性 cookie,除非注册用户没有注销。在美国和加拿大,许多使用 Opencart 的电子商务网站都受到了硬连线 cookie 政策的不必要负担,这导致他们失去了返回网站的客户,而不得不重新订购。

于 2012-10-20T04:25:41.093 回答
1

在 opencart 中没有 mod 可以做到这一点。如评论部分所述,您最好的选择是使用带有令牌的 cookie 或将会话到期时间设置为长达 7 天(尽管这有它的缺点)

于 2012-06-29T18:39:37.717 回答
0

这是错误的:

session_set_cookie_params(60*60*24, '/');

应该是:

session_set_cookie_params(time() + 60*60*24, '/');

无论如何,这会修改核心文件(system/library/session.php),所以真的不是一个完美的解决方案。

于 2017-06-15T16:01:23.407 回答
-1

请参阅下一条评论以获取解决方案。

于 2012-10-20T03:34:58.467 回答