【问题标题】:How to limit time allowed for items to stay in a customers' cart Magento如何限制物品留在客户购物车中的时间 Magento
【发布时间】:2026-02-07 23:15:01
【问题描述】:

我希望能够设置客户购物车过期的时间跨度,因此一旦将商品添加到他们的购物车中,他们有 15 分钟的时间结帐,然后所有商品都从购物车和库存中删除在这些特定项目上得到补充。

这可以通过更改 Magento 配置中的 Cookie 会话时间来实现,但会产生将用户(和管理员)注销的意外副作用。有没有办法只设置购物车的“会话”时间而不是用户?

【问题讨论】:

  • Cookie 会话不会帮助您,因为已注销的用户仍有他的物品在购物车中。
  • 实际上,超时会话 cookie 会有所帮助,因为篮子存储在会话变量中。过期的会话意味着$_SESSION 数组被销毁。不利的一面是,它也会将您注销。

标签: magento session cookies shopping-cart


【解决方案1】:

如果 Magento 有一个通用的包含文件(它很可能会,因为它基于 Zend),您可以在 $_SESSION 中添加一个条目来指定最后一次请求的时间。然后,您可以将其与新请求的当前时间进行比较,如果超过 15 分钟,则清除会话中任何特定于购物车的条目。

if(isset($_SESSION['_last_page_hit']))
{
    if(time() - (int)$_SESSION['_last_page_hit'] < (60*15))
    {
        unset($_SESSION['basket_whatever']); // unset basket stuff here
    }
}
$_SESSION['_last_page_hit'] = time();

您将保持登录状态,但所有购物篮数据都将被删除。显然,您需要找出需要取消设置的会话变量,因此可能需要对var_dump() 进行几次调用!

【讨论】: