Opencart minimum order price exclude one category

匿名 (未验证) 提交于 2019-12-03 01:05:01

问题:

I am using opencart and successfully added minimum order price for all transactions. This is the code I used:

<?php if ($this->cart->getSubtotal() >= 10) { ?> <div id="payment"><?php echo $payment; ?></div> <?php } else { ?> <div class="warning">Minimum 10 Euro to checkout</div> <?php }  ?>  

Now I want to exclude one category out of it so that $9 product from that category can be bought.

Update 1: Thank you so much for the help shadyyx

I tried shadyyx method but I am getting this error: unexpected T_BOOLEAN_OR in this line

<?php if ($this->cart->getSubtotal() >= 10 || $this->cart->productsAreInCategory(1)) { ?> 

Update 2: I tried this but it gave a pop up saying just error and ok button <?php if (($this->cart->getSubtotal() >= 10) || $this->cart->productsAreInCategory(1)) { ?>

I tried this <?php if (($this->cart->getSubtotal() >= 10) || ($this->cart->productsAreInCategory(1))) { ?> it did not give any error and does same work (min amount for all orders regardless of category id)

回答1:

I would go this way:

Extend the system/library/cart.php and add a method:

public function productsAreInCategory($category_id) {     $product_ids = array();     foreach($this->getProducts() as $product) {         $product_ids[] = $product['product_id'];     }      $categories = $this->db->query('SELECT category_id FROM ' . DB_PREFIX . 'product_to_category WHERE product_id IN (' . implode(',', $product_ids) . ')')->rows;      $category_ids = array();     foreach($categories as $category) {         $category_ids[] = $category['category_id'];     }      if(in_array($category_id, $category_ids) {         return true;     }      return false; } 

This method should accept a $category_id parameter to test against and should load categories for all products in cart. After first match a true is returned, if no match, a false is returned. You can now use this method this way:

<?php if (($this->cart->getSubtotal() >= 10) || $this->cart->productsAreInCategory(1)) { ?> <div id="payment"><?php echo $payment; ?></div> <?php } else { ?> <div class="warning">Minimum 10 Euro to checkout</div> <?php }  ?> 

Just replace the category ID in $this->cart->productsAreInCategory(1) with the correct one.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!