2

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

Alice 以用户名 foo 的客户身份登录。

然后 Bob 在不同的浏览器上以相同的客户 (foo) 身份登录。

Alice 和 Bob 各有不同的购物车。当 Alice 在她的浏览器中向购物车添加东西时,Bob 的购物车不会受到影响。

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

编辑: 感谢您的回复!在查看了 Alan 回答中的一些提示之后,我想我的问题的症结在于是否可以将引号应用于会话而不是用户。

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

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

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

4

2 回答 2

2

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

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

于 2013-05-03T17:57:33.033 回答
2

我从未见过允许您执行此操作的交钥匙扩展程序或食谱解决方案。您可能想尝试在StackExchange Magento 网站上提出这个问题——那里更欢迎非编程问题。

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

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

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

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

以上是解决问题的一种天真的方法——我不确定 Magento持久性购物车功能是否可以很好地与上述功能配合使用,但找出答案的最快方法是实现某些东西、测试和迭代。

这不是一个简单的解决方案,除非此功能是生死攸关的业务需求,否则我会跳过该功能。

于 2013-05-03T18:44:47.590 回答