如何将单个制造商产品添加到购物车每个订单 - Opencart 2.0.3.1

问题描述:

我正在使用Opencart 2.0.3.1。我有两个制造商。每个有两个产品。我应该可以将第一家制造商的两种产品添加到购物车中,当我尝试从第二家制造商添加产品时,不应允许添加。如何将单个制造商产品添加到购物车每个订单 - Opencart 2.0.3.1

它应该告诉客户单独订购。

我能够实现使用清晰的功能添加单个项目到购物车。但如果我们能够为每个订单实现单个制造商产品,那将更有意义。

您必须修改ControllerCheckoutCart中的add方法。 所以打开文件/catalog/controller/checkout/cart.php,找到下面的行

public function add() 

在此功能中,在大约336行这replce两行

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

      $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart')); 

这些线路

  //BEGIN OF THE PATCH 
      /* 
      OTRIGINAL CODE 
      $this->cart->add($this->request->post['product_id'], $quantity, $option, $recurring_id); 

      $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart')); 
      */ 
      //control if the cart isn't empty 
      $can_add_product=true; 
      if ($this->cart->hasProducts()>0){ 
       $products = $this->cart->getProducts(); 
       foreach ($products as $product) { 
        $product_just_in_cart = $this->model_catalog_product->getProduct($product['product_id']); 
        $manufacturer_id_in_cart=$product_just_in_cart['manufacturer_id']; 
        $manufacturer_name_in_cart=$product_just_in_cart['manufacturer']; 
        //we just analyze only the first product 
        break; 
       }  

       if ($product_info['manufacturer_id']!=$manufacturer_id_in_cart) { 
        $can_add_product=false; 
       } 
      } 

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

       $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart')); 
      } 
      else { 
       $json['success'] =sprintf('For this order you can add only products of '.$manufacturer_name_in_cart, $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart')); 

      } 
      //END OF THE PATCH 

您可以测试这个补丁here

+0

我已经测试过这个,即使我添加来自同一制造商的其他产品,它也会抛出相同的消息“对于此订单,您只能添加产品”,并且在购物卡预览中创建了undefined,请参阅此快照http:// prnt.sc/cir99c – Jahir

+0

我使用的是最新版本的OpenCart。请分享$ product的print_r [0] –

+0

好的。我使用的是2.0.3.1版本。我将分享print_r i – Jahir