Php 预付运费修改

Php 预付运费修改,php,prestashop,cart,Php,Prestashop,Cart,我需要Prestashop根据购物车中的物品数量计算运费。 如果有一个以上的项目在购物车,我想运费是所有运费总额的50% 我修改了购物车模块,但当我进入订单页面时,运费仍然是全额 我在区块车中的代码: if($nbTotalProducts>1) { $shipping_cost_float = $shipping_cost_float/2; $shipping_cost = $shipping_cost/2; } 如何存储所有模块/控制器的新装运成本?这并不是简单的装运

我需要Prestashop根据购物车中的物品数量计算运费。 如果有一个以上的项目在购物车,我想运费是所有运费总额的50%

我修改了购物车模块,但当我进入订单页面时,运费仍然是全额

我在区块车中的代码:

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

如何存储所有模块/控制器的新装运成本?

这并不是简单的装运成本操作。它们取决于用于运输车的运输工具。我认为您应该尝试在承运人选项中设置固定值,并定义许多价格范围

如果这还不够的话,对我来说最好的解决办法就是使用新的规则。创建一个提供免费送货的,并覆盖CartRule类。在getContextalValue方法中,这里的运费设置为0。我想你可以改为去掉50%。您可能还需要更改一些模板呈现(您的购物车将显示免费配送)


希望能有所帮助。

我认为您不需要在这里编写代码。你可以试着玩弄产品的重量


例如,您将所有物品的重量设置为1,并且如果重量达到1,您将运输成本配置为增加50%。这样,如果我理解正确,你就会得到你想要的东西。我想,我找到了解决办法

我修改了cart类(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;

希望它能帮助别人。

谢谢你的评论,但问题是,运费取决于产品,而不是承运人(我的客户是一个非传统的…)。因此,我无法添加范围并为其分配金额,因为这些金额是可变的,取决于当前选定产品的运输成本总和。