我需要Prestashop根据购物车中的商品数量来计算运费。 如果购物车中有多件商品,我希望运费价格为所有运费总和的50%。
我修理了购物车模块,但是当我继续订购页面时,运费仍为全额。
我在blockcart中的代码:
if($nbTotalProducts>1) {
$shipping_cost_float = $shipping_cost_float/2;
$shipping_cost = $shipping_cost/2;
}
如何为所有模块/控制器存储新的运费?
答案 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%。这样,如果我理解正确,您将拥有所需的物品