1

我想通过超链接将用户从邮件中重定向到 opencart 上的计费页面 保持产品价值已上传到购物车中。我不想显示购物车,而是希望用户看到帐单,填写表格并结帐。我曾考虑在购物车中创建产品并将用户重定向到其计费页面,但如果我使用该产品的计费页面,则当从外部链接使用时,COOKIE 值将过期..

有没有办法让客户直接进入计费页面,保持产品已经加载到购物车中?(我只有一种产品。)

4

1 回答 1

0

我可以考虑对结帐控制器进行小修改。

假设您的时事通讯中会有这样的链接:

http://your.eshop.com/index.php?route=checkout/checkout&add_product=1&product_id=10&pieces=1

然后立即在文件的开头catalog/controller/checkout/checkout.php(在if ((!$this->cart->hasProducts() ...您必须检查是否存在之前,如果有if(isset($this->request->get['add_product']) && $this->request->get['add_product']),请执行$this->cart->add($this->request->get['product_id'], $this->request->get['pieces']);

整个代码可能如下所示:

public function index() {
    if(isset($this->request->get['add_product']) && $this->request->get['add_product']) {
        $this->cart->add($this->request->get['product_id'], $this->request->get['pieces']);
    } // END OF MODIFICATION, the next code is already in checkout.php controller

    // Validate cart has products and has stock.
    if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {
        $this->redirect($this->url->link('checkout/cart'));
    }

如果您希望让用户购买不止一种产品,链接应如下所示

http://your.eshop.com/index.php?route=checkout/checkout&add_product=1&product_id[]=10&pieces[]=1&product_id[]=45&pieces[]=2&product_id[]=37&pieces[]=1

现在代码应该如下所示:

if(isset($this->request->get['add_product']) && $this->request->get['add_product']) {
    foreach($this->request->get['product_id'] as $i => $product_id) {
        $this->cart->add($product_id, $this->request->get['pieces'][$i]);
    }
} // END OF MODIFICATION

这段代码会做什么?在点击链接并在浏览器上打开后,代码会将所需的产品添加到购物车中,并且会像往常一样继续进行,因此该过程将与用户转到产品详细信息页面一样,单击“购买”按钮,然后单击您的 eshop 中某处的“结帐”链接。

于 2012-12-10T10:02:50.937 回答