首页 文章

是否可以在Opencart中制作持久的购物车

提问于
浏览
1

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

只有当用户明确地从购物车或结账时或一周后删除产品时,才应删除产品 .

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

4 回答

  • 3

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

  • 0

    有一种非常简单的方法可以做到这一点 .

    此修改适用于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

    这是错的:

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

    should 是:

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

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

  • 1

    请参阅解决方案的下一条评论 .

相关问题