2014-03-27 76 views
0

我需要Prestashop來計算運費價格取決於購物車中的物品數量。 如果購物車中有多件商品,我希望運費爲所有運費總和的50%。Prestashop運輸費用修改

我modyfied車模塊,但是當我進入訂購頁面,運輸成本仍然是滿的量。

我在blockcart代碼:

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

我怎麼能存儲新的運輸成本爲所有模塊/控制器?

回答

2

理解我想,我找到了解決方案。

我已修改車類(類/ 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; 

希望它會幫助別人。

0

這並不是很簡單的操縱運輸成本。它們取決於用於購物車的載體。我認爲你應該嘗試在運營商選項中設置固定價值,並定義很多價格範圍。

如果這還不夠,對我來說最好的解決方法是使用一個新的cartrule。創建一個免費送貨,並重寫CartRule類。在getContextualValue方法中,運輸成本在此設置爲0。我認爲你可以改變它去掉50%。您可能還必須更改一些模板渲染(您的購物車將顯示免費送貨)。

希望它有幫助。

0

我不認爲你需要在這裏編碼。你可以嘗試玩產品的重量。

例如,你把體重1所有項目和配置您的運輸成本要多50%,如果體重達到1。這樣,你將有你想要的東西,如果我正確

+0

謝謝您的評論,但問題是,運輸價格取決於產品,而不是運營商(我的客戶是一個非常規的...)。所以我不能添加範圍併爲它們分配金額,因爲這些金額是可變的,並取決於當前選定產品的運輸成本總和。 –