我如何根据php foreach循环中的项来回显备用消息

时间:2011-05-14 19:21:28

标签: php magento foreach echo

我正在尝试在Magento的产品页面上显示运费。我已经设法通过使用PHP来回应运费价格。但是,我现在提供某些物品的免费送货和这些产品我得到的回应和另一个看起来错误的运费价格。

当产品有货时,如何只回复免费送货,而其他一切只能回应正常价格?

我设法通过使用以下代码来回应免费送货规则:

        <?php
        if($_product->isSaleable())
        {
        $quote = Mage::getModel('sales/quote');
        $quote->getShippingAddress()->setCountryId('*');
        $quote->addProduct($_product);
        $quote->getShippingAddress()->collectTotals();
        $quote->getShippingAddress()->setCollectShippingRates(true);
        $quote->getShippingAddress()->collectShippingRates();
        $rates = $quote->getShippingAddress()->getShippingRatesCollection();

        foreach ($rates as $rate)
        if ($rate->getPrice(0.00)) 
        {
            echo ('This item qualifies for FREE shipping');
        }
        else    
            echo ('Shipping from £' . $rate->getPrice());
        }
        ?>

但这仍然显示其他运费。我该如何阻止其他价格显示?

2 个答案:

答案 0 :(得分:2)

你确定不是故意这样做:

if ($rate->getPrice()==0)

因为我不相信您想要将值传递给Magento中的get方法。

答案 1 :(得分:0)

由于您需要评估多个费率,并使用foreach进行循环,因此您将收到每个费率的消息。需要简单的编程。

$minPrice = PHP_INT_MAX;
foreach ($rates as $rate) {
    $minPrice = min($minPrice, $rate->getPrice());
}
if ($minPrice == 0) {
    echo ('This item qualifies for FREE shipping');
}
elseif ($minPrice < PHP_INT_MAX) {
    echo ('Shipping from £' . $rate->getPrice());
}