Prestashop运费修改

时间:2014-03-27 09:57:47

标签: php prestashop cart

我需要Prestashop根据购物车中的商品数量来计算运费。 如果购物车中有多件商品,我希望运费价格为所有运费总和的50%。

我修理了购物车模块,但是当我继续订购页面时,运费仍为全额。

我在blockcart中的代码:

if($nbTotalProducts>1) {
    $shipping_cost_float = $shipping_cost_float/2;
    $shipping_cost = $shipping_cost/2;
}

如何为所有模块/控制器存储新的运费?

3 个答案:

答案 0 :(得分:2)

我想,我找到了解决方案。

我修改了购物车类(classes / cart.php) - getPackageShippingCost函数。

我在运费转换为浮动之前添加此代码:

$product_array = $this->getProducts();
$pcount = 0; //quantity of products in cart
$moreThanOneQuantity = FALSE;
  foreach($product_array as $product_item) {
    $pcount++;
    if($product_item['quantity']>1) $moreThanOneQuantity = TRUE;
  }
if($shipping_cost>0 && ($pcount>1 || $moreThanOneQuantity )) $shipping_cost=$shipping_cost/2;

希望它会对某人有所帮助。

答案 1 :(得分:0)

操纵运费不是那么简单。它们取决于用于购物车的载体。我认为您应该尝试在运营商选项中设置固定值,并定义许多价格范围。

如果还不够,对我来说最好的解决方案是使用新的推车。创建一个免费送货,并覆盖CartRule类。在方法getContextualValue中,运费在此处设置为0。我认为您可以将其更改为删除50%。您可能还需要更改一些模板渲染(您的购物车将显示免费送货)。

希望有所帮助。

答案 2 :(得分:0)

我认为你不需要在这里编码。您可以尝试使用productos的权重。

例如,您将所有物品的重量都设为1,如果重量达到1,您的运费将增加50%。这样,如果我理解正确,您将拥有所需的物品