2016-09-16 2 views
1

저는 Opencart 2.0.3.1을 사용하고 있습니다. 두 Manufacturers.Each 두 제품이 있습니다. 첫 번째 제조업체의 두 제품을 장바구니에 추가 할 수 있어야하며 두 번째 제조업체의 제품을 추가하려고하면 추가 할 수 없습니다.하나의 제조업체 제품을 주문 당 카트에 추가하려면 어떻게해야합니까 - Opencart 2.0.3.1

고객에게 별도로 주문하라고 지시해야합니다.

명확한 기능을 사용하여 장바구니에 단일 항목을 추가 할 수있었습니다. 그러나 주문 당 단일 제조업체 제품을 달성 할 수 있다면 더 많은 의미가 있습니다.

답변

1

ControllerCheckoutCart에서 추가 방법을 수정해야합니다. 그래서

  $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')); 

이 라인이 두 줄 정도 줄에서이 함수에서 336 교체 하십시오를 다음 줄

public function add() 

을 파일 /catalog/controller/checkout/cart.php을 열고 찾기

  //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

동일한 제조업체의 다른 제품을 추가하더라도이 테스트를 거쳤습니다. "이 제품을 추가 할 수있는이 주문의 경우"또한 쇼핑 카드 미리보기에서 정의되지 않은 상태로 생성됩니다.이 스냅 샷은 http : //를 참조하십시오. prnt.sc/cir99c – Jahir

+0

OpenCart의 마지막 버전을 사용하고 있습니다. print_r $ 제품을 공유하십시오. [0] –

+0

Ok. 버전 2.0.3.1을 사용하고 있습니다. 나는 print_r i를 공유 할 것입니다 – Jahir