首页 文章

需要用户从opencart的url登陆结算页面,需要已经加载购物车

提问于
浏览
1

我希望通过超链接将用户从邮件重定向到opencart上的结算页面保存产品 Value 已经上传到购物车中..而不是显示购物车我只是希望用户看到结算,填写表格并结帐..我已经考虑过在购物车中创建产品并将用户重定向到其结算页面,但如果我使用该产品的结算页面,则从外部链接使用COOKIE VALUE EXPIRES时...

有没有办法让客户直接登陆结算页面,保持产品已装入购物车? (我只有一种产品 . )

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
    

    这段代码会做什么?在点击链接并在浏览器上打开之后,代码会直接将所需的产品添加到购物车中,并且通常会继续进行,因此该过程与用户转到产品详细信息页面的过程非常相似,点击“购买”按钮,然后点击您电子商店某处的“结账”链接 .

相关问题