我正在使用opencart并成功为所有交易添加了最低订单价格。 这是我使用的代码:
<?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 } ?>
现在我想从中排除一个类别,以便可以购买该类别的9美元产品。
更新1: 非常感谢你帮助shadyyx
我尝试过shadyyx方法,但是我收到了这个错误:
这一行unexpected T_BOOLEAN_OR
<?php if ($this->cart->getSubtotal() >= 10 || $this->cart->productsAreInCategory(1)) { ?>
更新2:我尝试了这个,但它弹出一个只是错误和确定按钮
<?php if (($this->cart->getSubtotal() >= 10) || $this->cart->productsAreInCategory(1)) { ?>
我试过这个
<?php if (($this->cart->getSubtotal() >= 10) || ($this->cart->productsAreInCategory(1))) { ?>
它没有给出任何错误并做同样的工作(所有订单的最小金额,不论类别ID)
答案 0 :(得分:0)
我会这样:
扩展system/library/cart.php
并添加方法:
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;
}
此方法应接受$category_id
参数进行测试,并应加载购物车中所有产品的类别。在第一次匹配后返回true,如果不匹配,则返回false。您现在可以这样使用此方法:
<?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 } ?>
只需将$this->cart->productsAreInCategory(1)
中的类别ID替换为正确的类别。