我想通过超链接将用户从邮件中重定向到 opencart 上的计费页面 保持产品价值已上传到购物车中。我不想显示购物车,而是希望用户看到帐单,填写表格并结帐。我曾考虑在购物车中创建产品并将用户重定向到其计费页面,但如果我使用该产品的计费页面,则当从外部链接使用时,COOKIE 值将过期..
有没有办法让客户直接进入计费页面,保持产品已经加载到购物车中?(我只有一种产品。)
我可以考虑对结帐控制器进行小修改。
假设您的时事通讯中会有这样的链接:
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 中某处的“结帐”链接。