The problem is that this code runs when the page loads, and basically the delivery methods block is just hidden until you reach this step. It means that
$this->getQuote()->getShippingAddress()->getCountry()
l
The only thing that loads Ajax is the available delivery methods, so I solved it by connecting to
app/design/base/default/template/checkout/onepage/shipping_method/available.phtml
and adding the following javascript code
<?php <script type="text/javascript"> var countryID = '<?= Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData('country_id') ?>'; jQuery('#ownTransport')[countryID == 'FR' ? 'hide' : 'show'](); </script>
For reference: Code in
app/design/XXX/XXX/template/checkout/onepage/shipping_method.phtml
was
<form id="co-shipping-method-form" class="stack-form" action=""> <div id="checkout-shipping-method-load"> <?php echo $this->getChildHtml('available') ?> </div> <script type="text/javascript"> //<![CDATA[ var shippingMethod = new ShippingMethod('co-shipping-method-form', "<?php echo $this->getUrl('checkout/onepage/saveShippingMethod') ?>"); //]]> </script> <div id="onepage-checkout-shipping-method-additional-load"> <?php echo $this->getChildHtml('additional') ?> </div> <?php <?php <div id="ownTransport"> <?php echo Mage::helper('amorderattr')->fields('shipping_method'); ?> </div> <div id="shipping-method-buttons-container" class="buttons-set"> <button class="button" onclick="shippingMethod.save()"><?php echo $this->__('Continue') ?></button> <span class="please-wait" id="shipping-method-please-wait" style="display:none;"><?php echo $this->__('Loading') ?></span> </div>
Hope this helps someone!
source share