Opencart 1.5.4 - 不验证同一产品的不同选项的最小订单数量

时间:2017-06-21 13:24:21

标签: php opencart

对于我的Opencart 1.5.4项目,我们为产品设置了最少12个数量。如果用户选择小于12的数量,则不允许用户购买(Opencart在购物车页面上对此进行验证)。但是,如果用户在不同选项(小型,中型,大型)的小组中选择相同的产品,那么他可以下订单。

例如

  

产品A(小)6数量

     

产品A(中)6数量

     

产品A(大)10数量

     

总数量为22。

但我希望单个项目数量为minimum 12,如下所示,

  

产品A(小)12个数量(最少12个)

     

产品A(中)12数量(最少12)

     

产品A(大)12个数量(最少12个)

Opencart不会被视为不同的选项,因为购物车中的不同产品和用户可以轻松购买少于12个数量的单个产品。

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?可以使用任何扩展吗?

1 个答案:

答案 0 :(得分:1)

我找到了这个问题的解决方案,因为我必须在购物车和结帐控制器中进行更改。默认情况下,Opencart按产品ID计算购物车页面上的产品数量。我已经定制了代码,现在它将检查购物车中每种产品的个别数量。

  

推车控制器==> Cart.php \ catalog \ controller \ checkout \ cart.php   在第192行至第197行进行更改

foreach ($products as $product) {

    $product_total = 0;
    $allCartProductId[] = $product['product_id'];
    foreach ($products as $product_2) {
        if ($product_2['product_id'] == $product['product_id']) {
            $product_total += $product_2['quantity'];
        }
    }

    if ($product['minimum'] > $product_total) {
        $this->data['error_warning'] = sprintf($this->language->get('error_minimum'), $product['name'], $product['minimum']) 
    }
}
  

foreach ($products as $product) {

                $product_total = 0;
                $allCartProductId[] = $product['product_id'];

                        $product_total += $product['quantity'];

                if ($product['minimum'] > $product_total) {
                    $this->data['error_warning'] .= sprintf($this->language->get('error_minimum'), $product['name'], $product['minimum'])."<br>";
                }
  

结帐控制器==&gt; checkout.php   \ catalog \ controller \ checkout \ checkout.php在第15行进行更改   到20

foreach ($products as $product) {
        $product_total = 0;

        foreach ($products as $product_2) {
            if ($product_2['product_id'] == $product['product_id']) {
                $product_total += $product_2['quantity'];
            }
        }
  

foreach ($products as $product) {
    $product_total = 0;         
    $product_total += $product['quantity'];