我正在尝试在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];
}