从购物车打开购物车自定义按钮中删除项目


Removing Item From Basket Opencart Custom button

>基本上,当客户"喜欢"我们的Facebook页面时,我会将商品添加到购物车中,但为了确保他们不会充分利用此优惠,我想从购物车中删除该商品,如果他们与页面不同。

因此,使用 Ajax 调用,我想从购物篮中删除一个项目。现在我注意到从购物篮中删除项目需要产品密钥。

它发出这样的获取请求:

index.php?route=module/cart&remove=1286:YToxOntpOjYyMzk0O3M6NjoiMTI1MDQxIjt9:

查看此请求,我发现在控制器中它从以下语句中调用一个函数:

if (isset($this->request->get['remove'])) {
        $this->cart->remove($this->request->get['remove']);
        unset($this->session->data['vouchers'][$this->request->get['remove']]);
    }

然后从这里调用系统/库/购物车中的删除函数.php

public function remove($key) {
    if (isset($this->session->data['cart'][$key])) {
        unset($this->session->data['cart'][$key]);
    }
    $this->data = array();
}

现在。。我知道我可以轻松地执行类似的获取命令。但该键似乎是产品 ID 后跟其他内容。我不确定这是什么或我如何访问它,以便我可以从购物篮中删除物品。

如果有人能对此有所了解,我将不胜感激。

只需再次查看方法add() system/library/cart.php - 在那里您可以看到以下代码:

if (!$option) {
    $key = (int)$product_id;
} else {
    $key = (int)$product_id . ':' . base64_encode(serialize($option));
}

我希望现在你很清楚;-)(如果没有,请询问)。

感谢@shadyyx对序列化信息的建议。

现在,由于我要从购物车中删除的商品始终是同一商品,并且我知道产品 ID 是什么,所以我可以简单地检查购物车数组中会话中存储的内容。每个项目都包含其产品 ID 和编码选项,并在此数组中。

现在循环购物车搜索产品ID,然后使用我原始帖子中提到的Ajax代码将其从购物车中删除。