Я пытаюсь сделать то же самое с недели, но не работает 100%. Я думаю, что код должен быть таким:
Шаг один: Добавить функцию JS:
_instantQuoteShippingResponse {
var cart = document.getElementsByClassName('cart-shipping-block')[0];
cart.innerHTML = response.responseText.evalJSON().cart_shipping;
cart.innerHTML = cart.firstChild.innerHTML;
return true;
}
instantQuoteShipping() {
try {var request = new Ajax.Request(coShippingMethodForm.form.action, {method: 'post',
parameters: {
country_id: $('country').value, region_id: $('region_id').value,
region: $('region').value, estimate_postcode: $('postcode').value},
redirect: 'no',
onSuccess: function(response) {_instantQuoteShippingResponse(response);},
onFailure: function(response) {coShippingMethodForm.submit();}});
} catch(e) { return false;}
return true;
}
Шаг второй: добавить кнопку событие отгрузкой кнопку цитата (приложение \ дизайн \ интерфейс \ Default \ современный \ шаблон \ фотографии \ корзина \ shipping.phtml).
onclick="instantQuoteShipping()"
Шаг три: редактировать повозка контроллер (Mage/Оформить заказ/контроллеры/CartController.php) переписывают estimatePostAction:
public function estimatePostAction()
{
parent::estimatePostAction();
if ($this->getRequest()->getParam('redirect') == 'no') {
try {
$response = array();
$this->loadLayout();
$this->_getSession()->getMessages(true);
// $response['cart_shipping'] = $this->getLayout()->getBlock('checkout.cart.shipping')->toHtml();
$response['cart_shipping'] = $this->getLayout()
->createBlock('checkout/cart_shipping')
->setTemplate('checkout/cart/shipping.phtml')->toHtml();
$this->getResponse()->clearAllHeaders();
$this->getResponse()->setBody(Zend_Json::encode($response));
$this->getResponse()->setHttpResponseCode(200);
} catch(Exception $e) {
Mage::log($e->getMessage());
}
}
}
Шаг четыре: редактировать cart.phtml (приложение \ дизайн \ внешний интерфейс \ по умолчанию \ современный \ шаблон \ фотографии \ cart.phtml) скопировать все содержимое из shipping.phtml, за исключением блока для определения скорости оценки:
// Locate this line:
<?php if (!$this->getIsVirtual()): echo $this->getChildHtml('shipping'); endif; ?>
// Update to...:
<?php if (!$this->getIsVirtual()): ?>
// Paste all content from shipping.phtml here
<?php endif; ?>
// ATENTION: Dont paste the code below
if (($_shippingRateGroups = $this->getEstimateRates())) {
...
}
Он должен работать!