2016-08-13 8 views
4

カテゴリ内にいくつかの製品(exapmleのID 10)がありますが、この製品は通常、ナビゲーションに表示されません。この商品はショッピングカートの要約ページにのみ追加できます。カートの最後の商品が特定のカテゴリにある場合

通常の製品をカートに追加し、要約ページの後に、カテゴリ10の追加製品をカートに追加することができます。これは機能します。

普通の商品をすべてカートから削除すると、この商品は通常の商品を注文することなく注文することができないため、カートからカテゴリ10のすべての商品を自動的に削除する必要があります。

私はajax-cart.jsで何かを考えていますが、カテゴリウォッチを指定する方法は正確にはわかりません。

+0

誰かアイデア?多分私はCartController.phpを変更しましたか? – redpillcoders

+0

モジュールを使用していますか? – TheDrot

+0

prestashopのバージョンを使用していますか? –

答えて

3

チェックを行うことができるカートから製品を取り出した後に実行するフックactionAfterDeleteProductInCartがあります。したがって、このコードでモジュールを作成してください。

class CartExtraProductsCleaner extends Module { 
    public function __construct() { 
     $this->name = 'cartextraproductscleaner'; 
     $this->tab = 'front_office_features'; 
     $this->version = '1.0'; 
     $this->author = 'whatever'; 

     parent::__construct(); 

     $this->displayName = $this->l('Cart extra products cleaner.'); 
     $this->description = $this->l('Module deletes additional products from cart when there are no standalone products in cart.'); 
    } 

    public function install() { 
     return parent::install() && $this->registerHook('actionAfterDeleteProductInCart'); 
    } 

    public function hookActionAfterDeleteProductInCart($params) { 
     if ($this->context->cart->nbProducts()) { 
      $only_additional_products = true; 
      foreach ($this->context->cart->getProducts() as $product) { 
       if ($product['id_category_default'] != 10) { 
        $only_additional_products = false; 
        break; 
       } 
      } 
      if ($only_additional_products) { 
       $this->context->cart->delete(); 
      } 
     } 
    } 
} 

は、基本的にはカートからすべての製品を削除した後、我々は製品のすべての製品を通じて、カート、ループ内に残っているかどうかを確認し、そのデフォルトのカテゴリのIDを確認してください。カテゴリIDが10の製品のみが存在する場合は、カート全体を削除してください。

+0

です。コードに感謝します。私はモジュールを作成しましたが、何も起こりません。私はajaxカートを持っていて、リフレッシュコールが必要なので、多分問題ですか? – redpillcoders

+0

通常の製品を削除した後に注文ページを更新すると、空のカートが表示されますか? – TheDrot

+0

は、[OK]を私は解決策を見つけた:PSの私のバージョンは、行129フックでCartController.phpでより多くの入力を必要とする、フック「actionAfterDeleteProductInCart」を持っていけない::幹部(「actionAfterDeleteProductInCart」、配列( + \t \t \t \t「id_cartを'=>(int型)の$ this - >、コンテキスト> cart-> ID、 + \t \t \t \t 'id_product'=>(int型)の$ this - > id_product、 + \t \t \t \t 'id_product_attribute'=>( int)$ this-> id_product_attribute、 + \t \t \t \t 'customization_id' =>(int)$ this-> cust omization_id、 + \t \t \t \t 'id_address_delivery' =>(int型)の$ this - > id_address_delivery + \t \t \t)); – redpillcoders

関連する問題