Opencart:如何在将商品添加到购物车时更改商品价格

时间:2015-02-15 18:58:02

标签: opencart2.x

我正在尝试在opencart中实现一项功能,可以通过文本区域在产品页面输入自定义价格,如果将项目添加到购物车,如果输入自定义价格,它将应用自定义中指定的价格价格领域。 类似的问题被问到here有人提供了一个适用于OpenCart 1.5.x的好解决方案。但是我试图在OpenCart 2上采用这种方法而没有任何成功。过去几天我一遍又一遍地检查了一切,但我似乎无法让这个工作,因为我是编程世界的新手 我想知道是否有人能指出我正确的方向,我可能会失踪。 我在网上搜索但无法找到任何相关信息

我已检查过并注意到AJAX请求已更改为2.x中的#product div,因此我在数量下方的div中输入了我的价格输入

<input name="custom_price" id="custom_price"  value=""  title="custom_price" class="input-text custom_price" type="textarea">

我已经在Add()方法中移动到控制器checkout / cart / add我添加了这段代码

if(isset($this->request->post['custom_price'])) {
            $custom_price = $this->request->post['custom_price'];
        } else {
            $custom_price = false;
        }

再往下,我改变了这一行

$this->cart->add($this->request->post['product_id'], $this->request->post['quantity'], $option, $recurring_id);

为:

$this->cart->add($this->request->post['product_id'], $this->request->post['quantity'], $option, $custom_price, $recurring_id);

接下来,在system/library/cart.php我已将Add()方法的定义更改为以下

public function add($product_id, $qty = 1, $option = array(), $recurring_id = 0, $custom_price = false) {

在Add()方法结束之前,我添加了以下内容

if($custom_price) {
        if(!isset($this->session->data['cart']['custom_price'])) {
            $this->session->data['cart']['custom_price'] = array();
        }

        $this->session->data['cart']['custom_price'][$key] = $custom_price;
    }

在GetProduct()中,我添加了这些行

if(isset($this->session->data['cart']['custom_price'][$key])) {
$price = $this->session->data['cart']['custom_price'][$key];

}

就在这一行之后:

$price = $product_query->row['price'];

最后在产品价格设定为价格+期权价格

的数组之后
'price'           => ($price + $option_price),   

我添加了以下内容

if(isset($this->session->data['custom_price'][$key])) {
$this->data[$key]['price'] = $this->session->data['custom_price'][$key];
}

0 个答案:

没有答案