如何在 UberCart 中保留购物车?

How to persist cart in UberCart?

我有一个购物车,我在其中添加了产品 A 和 B。可以在没有 B 的情况下购买产品 A,但如果您购买产品 A,则必须同时购买产品 B。我写了一个简单的 table 来跟踪这些关系,并在它们的规则被破坏时阻止您结账。

当用户添加到他们的购物车然后继续注册时,我的问题就出现了。注册后 cart_item_id 发生了变化,用户的 session_id 发生了变化。

如何将匿名用户的会话与现在注册并登录的用户的会话进行匹配?

我意识到我可以将任何数据添加到 cartContents,而不是使用第二个 table 来存储我想要保留的数据,它会自动保留我在用户登录时存储的所有信息,出去。

我是这样进行更新的:

$cartItemID = 1; // the id of the item in the cart I want to add info to
$cartContents = uc_cart_get_contents();
foreach ($cartContents as $c) 
{
    if ($c->cart_item_id == $cartItemID)
    {
        $c->data['my_chosen_key'] = $sessionData;
        uc_cart_update_item($c);
    }
}

如果您注销并重新登录,信息会保留。