Opencart最低订单价格不包括一个类别

时间:2013-11-18 08:09:59

标签: php opencart

我正在使用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)

1 个答案:

答案 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替换为正确的类别。