【发布时间】:2012-12-10 06:53:31
【问题描述】:
我想通过将用户超链接到 opencart 上的计费页面来将用户从邮件中重定向 保持产品价值 已经上传到购物车.. 而不是显示购物车,我只想让用户看到帐单,填写表格并结帐.. 我曾想过在购物车中创建一个产品并将用户重定向到其计费页面,但如果我使用该产品的计费页面,当从外部链接使用时,COOKIE VALUE 会过期..
有没有办法让客户直接进入结算页面,同时保持产品已加载到购物车中? (我只有一种产品。)
【问题讨论】:
我想通过将用户超链接到 opencart 上的计费页面来将用户从邮件中重定向 保持产品价值 已经上传到购物车.. 而不是显示购物车,我只想让用户看到帐单,填写表格并结帐.. 我曾想过在购物车中创建一个产品并将用户重定向到其计费页面,但如果我使用该产品的计费页面,当从外部链接使用时,COOKIE VALUE 会过期..
有没有办法让客户直接进入结算页面,同时保持产品已加载到购物车中? (我只有一种产品。)
【问题讨论】:
我可以考虑对结帐控制器进行小修改。
假设您的时事通讯中会有这样的链接:
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
这段代码会做什么?在点击链接并在浏览器上打开后,代码会将所需的产品添加到购物车中,并且会像往常一样继续进行,因此该过程将与用户转到产品详细信息页面一样,点击“购买”按钮,然后点击您网店中某处的“结帐”链接。
【讨论】: