<?php foreach ($_rates as $_rate): ?>
<?php if ($_rate->getCode()=='freeshipping_freeshipping' && !$this->getAddress()->getShippingMethod()) {
$this->getAddress()->setShippingMethod($_rate->getCode());
} ?>
Для того чтобы стоимость доставки отображалась в корзине вам необходимо, чтобы данный метод был активирован для данной корзины. Для этого достаточно добавить обсервер на событие checkout_cart_save_after и в коде реализовать добавление:
$_shippingMethod = 'freeshipping_freeshipping';
$_session = Mage::getSingleton('checkout/session');
$_quote = $_session->getQuote();
$_address = $_quote->getShippingAddress();
$_sessionCost = $_session->getQuoteShippingCost();
$_sessionCountry = $_session->getQuoteShippingCountry();
if ((!$_sessionCost || $_sessionCost == 0)) {
$_country = null;
$_customerSession = Mage::getSingleton('customer/session');
if ($_customerSession->isLoggedIn()) {
$_customerAddress = $_customerSession->getCustomer()->getDefaultShippingAddress();
if ($_customerAddress != null) {
if ($_customerAddress->getId()) $_country = $_customerAddress->getCountryId();
}
}
if ($_country == null) $_country = 'US';
$_address->setCountryId($_country);
if ($this->_getRequest()->getParam('zip_code')) {
$_address->setPostcode($this->_getRequest()->getParam('zip_code'));
}
$_address->setCollectShippingRates(true)->collectShippingRates();
$_quote->setShippingMethod($_shippingMethod)->save();
$_method = $_quote->getShippingMethod();
if ($_method) {
foreach ($_address->getAllShippingRates() as $_rate) {
if ($_rate->getCode() == $_method) {
$_session->setQuoteShippingCost($_address->getQuote()->getStore()->convertPrice($_rate->getPrice(), false));
Mage::getSingleton('checkout/type_onepage')->getQuote()->getShippingAddress()->setCountryId($_country)->setShippingMethod($_method)->save();
break;
}
}
}
$_session->getQuote()->save();
$_session->resetCheckout();
} else {
//log
}
Код может незначительно отличаться, но принцип таков