問題は、このコードがページの読み込み時に実行され、基本的にそのステップに到達するまで配送方法ブロックが非表示になることです。この意味は
$this->getQuote()->getShippingAddress()->getCountry()
l
Ajax によって読み込まれるのは利用可能な配送方法だけなので、フックすることで解決しました
app/design/base/default/template/checkout/onepage/shipping_method/available.phtml
次のJavaScriptコードを追加します
<?php //Show extra shipping options only if the shipping address is outside of FRANCE ?>
<script type="text/javascript">
var countryID = '<?= Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData('country_id') ?>';
jQuery('#ownTransport')[countryID == 'FR' ? 'hide' : 'show']();
</script>
参考までに:のコード
app/design/XXX/XXX/template/checkout/onepage/shipping_method.phtml
だった
<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 //ADD AMASTY FIELDS ?>
<?php //Show extra shipping options only if the shipping address is outside of FRANCE ?>
<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>
これが誰かを助けることを願っています!