我想在Opencart支持的商店中制作持久购物车。换句话说,如果用户将产品添加到购物车中并且用户尚未登录。但下次客户在一周内再次访问网站时,他的产品应该放在购物车中。
只有当用户明确地从购物车或结帐时或一周后删除产品时,才应删除产品。
我认为这可以通过使用cookies来完成?将不胜感激
答案 0 :(得分:3)
有一种非常简单的方法可以做到这一点。
此修改适用于OC 1.4.X.X和OC 1.5.X.X
以下是它的完成方式:
在主目录中,找到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策略的不必要的负担,导致他们失去返回其网站的客户,只需要重新进行订购。
答案 1 :(得分:1)
在opencart中没有mod会这样做。正如评论部分所述,您最好的选择是使用带有令牌的cookie或将会话到期时间设置为长达7天(尽管这有其缺点)
答案 2 :(得分:0)
这是错误的:
C:\DM\stlport\include
应该:
session_set_cookie_params(60*60*24, '/');
无论如何,这会修改核心文件(system / library / session.php),所以真的不是一个完美的解决方案。
答案 3 :(得分:-1)
请参阅解决方案的下一条评论。