在magento中自动选择送货方式

时间:2013-11-07 15:50:52

标签: php magento

嘿伙计们,我的magento商店只有一种名为JNE http://www.magentocommerce.com/magento-connect/suhanto-jne.html的送货方式

我希望在我的客户填满他的城市时自动选择送货方式。

我已经搜索并找到了这个:http://www.magentocommerce.com/boards/viewthread/9223/#t33602

他的解决方案就像这样

// find methods loop:
            <?php foreach ($_rates as $_rate): ?>

//  add checking for free shipping method and setting it as default
                <?php if ($_rate->getCode()=='freeshipping_freeshipping' && !$this->getAddress()->getShippingMethod()) {
                $this->getAddress()->setShippingMethod($_rate->getCode());
            } ?>

我不知道我应该在free.html中将代码放在哪里

顺便说一下,我在available.html

中有这个代码
<?php if (!($_shippingRateGroups = $this->getShippingRates())): ?>
<strong><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></strong>
<dl class="shipment-methods">
<?php foreach ($_shippingRateGroups as $code => $_rates): ?>
    <dt><?php echo $this->getCarrierName($code) ?></dt>
    <dd>
        <ul>

<?php foreach ($_rates as $_rate): ?>
            <li>
               <?php if ($_rate->getErrorMessage()): ?>
                <ul class="messages"><li class="error-msg"><ul><li><?php echo $_rate->getErrorMessage() ?></li></ul></li></ul>
               <?php else: ?>
                    <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> onclick="shippingMethodStep.save()"/>
                    <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?>
                    <strong>
                    <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
                    <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?>

                    <?php echo $_excl; ?>
                    <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
                        (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
                    <?php endif; ?>
                    </strong>
                    </label>
               <?php endif ?>
            </li>
        <?php endforeach; ?>

</ul>
    </dd>
<?php endforeach; ?>


您能告诉我应该在哪里更换或添加该解决方案。

或者自动选择jne运输方法的其他解决方案

1 个答案:

答案 0 :(得分:0)

在您的情况下非常难看的方法是编辑

<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?>

input

之内
<?php if($_rate->getCode()===$this->getAddressShippingMethod() or true){ echo ' checked="checked"';}  

这不是一个非常聪明的原因,但它会适用于您的情况,因为每个单选按钮都会被选中 - 在您的情况下它只是一个。但最好检查一下是否只有一种运输方式。也许这也有效(到目前为止我还没有测试过):

<?php if($_rate->getCode()===$this->getAddressShippingMethod() or count($_shippingRateGroups) == 1){ echo ' checked="checked"';} 

它计算出货数组的数组元素数。如果它只是一个元素,则设置selected - 标记。