在Magento中,让同一个客户在不同的浏览器上使用不同的引号

时间:2013-05-03 17:50:18

标签: php magento session

不幸的是,由于我无法控制的情况,我需要进行以下配置:

Alice以用户名foo登录为客户。

然后Bob在另一个浏览器上以相同的Customer(foo)身份登录。

爱丽丝和鲍勃各有购物车。当Alice在浏览器中向购物车添加内容时,Bob的购物车不受影响。

在Magento的默认配置中,Alice和Bob共享存储在服务器上的一个购物车,因此购物车在它们之间同步。有什么方法可以强迫Magento的会议以我需要的方式工作吗?

  

修改   谢谢你的回复!在研究了Alan的一些提示之后   回答,我想我的问题的症结在于是否可以做出引用   申请会议而不是用户。

     

我可以挂钩某些登录事件并执行以下操作:

Mage::getSingleton('checkout/session')->setQuoteId(null);
     

并且仍然保持用户的购物车在其他浏览器上登录?

2 个答案:

答案 0 :(得分:2)

这是一个非常奇怪的用例,但似乎与“会话”并不像购物车的限制那么相关。如果您想为每个用户支持多个购物车,您似乎需要创建新功能。需要在整个系统中包含UI更改和其他更改的功能,以便不会真正混淆可能在不同浏览器(可能在不同设备上)合法登录网站并希望查看其SAME购物车的用户。

所以我想说,如果你需要在更深层次上考虑这个问题,而不仅仅是改变购物车行为,并将其视为修改基本应用程序功能。

答案 1 :(得分:2)

我从来没有见过允许你这样做的交钥匙扩展或食谱解决方案。您可能想尝试在StackExchange Magento site上提出这个问题 - 非编程问题在那里更受欢迎。

如果我要构建/编程此功能,我的一般方法是

  1. 查找客户登录后触发的事件,然后为此事件设置观察者

  2. 在观察者中,找到刚使用sales/quote对象(即sales_flat_quote表)登录的用户的最后一个未转换的“购物车”。

  3. 然后,仍然在观察者中,我会使用购物车会话的setQuoteId方法将此旧报价作为当前报价

  4. 以上是解决问题的一种天真的方法 - 我不确定Magento persistant cart功能是否会与上述功能相配,但最快的方法是实现某些功能,测试和迭代

    这不是一个简单的解决方案,除非此功能是实时或模具业务要求,否则我将跳过该功能。