Недавно у меня такое же требование и я установил, реализовав метод событийно-наблюдателя.
На самом деле вы можете добавить любую дополнительную стоимость доставки в любой способ доставки для любого условия, реализовав мероприятие под названием sales_quote_collect_totals_before
и метод модели наблюдателя (фиктивный код, хотя) выглядит следующим образом:
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
/**@var Mage_Sales_Model_Quote $quote */
$quote = $observer->getQuote();
$someConditions = true; //this can be any condition based on your requirements
$newHandlingFee = 15;
$store = Mage::app()>getStore($quote>getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
foreach ($carriers as $carrierCode => $carrierConfig) {
if($carrierCode == 'fedex'){
if($someConditions){
Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
$store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage
$store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee);
###If you want to set the price instead of handling fee you can simply use as:
#$store->setConfig("carriers/{$carrierCode}/price", $newPrice);
Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log');
}
}
}
}
Вы заметили какой-либо побочные эффектов путем установки значения конфигурации магазина таким образом? – pspahn