4

我想在 Magento 的实际产品页面上加上运费,这样客户就可以看到他们要花多少钱。我可以从购物篮页面添加运费估算器。但我真正想要的只是产品价格下的一行文字,说明运费从£XX.XX

我看过这个教程:http ://aneeshsreedharan.wordpress.com/2010/04/28/estimating-shipping-rate-on-product-details-page-in-magento/#comment-10但它不适用于我在 Magento 1.4.2 上 - 我认为本教程使用的是旧版本。

我目前使用的是基于重量的表运费方式,只有一个选项。

编辑:我最终解决了问题:相当尴尬的是,我没有意识到博客正在剥离格式。它正在将 ' 更改为 '</p>

我现在可以确认下面的代码确实显示了运费:

<?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)
{
echo $rate->getPrice();
}
}
?>
4

2 回答 2

4

我最终解决了问题:相当尴尬的是,我没有意识到博客正在剥离格式。它正在将 ' 更改为 '</p>

我现在可以确认下面的代码确实显示了运费:

<?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)
{
echo $rate->getPrice();
}
}
?>

我已经编辑了我的原始帖子 - 但要确认上面的代码有效。

于 2011-04-14T11:28:05.203 回答
3

稍微改进了一下:

            <!-- SHOW SHIPPING RATES-->
        <?php $quote = Mage::getModel('sales/quote');
        $quote->getShippingAddress()->setCountryId('ES'); // Set your default shipping country here
        $_product->getStockItem()->setUseConfigManageStock(false);
        $_product->getStockItem()->setManageStock(false);
        $quote->addProduct($_product);
        $quote->getShippingAddress()->setCollectShippingRates(true);
        $quote->getShippingAddress()->collectTotals();
        $rates = $quote->getShippingAddress()->getShippingRatesCollection();
        // Find cheapest rate
        $cheapestrate = null;
        foreach ($rates as $rate) {
            if (is_null($cheapestrate) || $rate->getPrice() < $cheapestrate) {
                $cheapestrate = $rate->getPrice();
            }
        }
        $corehelper = Mage::helper('core');
        if ($cheapestrate) {
            echo '<p><strong>Shipping costs:</strong> ' . $corehelper->currency($cheapestrate);?></p>
            <?php
            }else {
            echo "<strong>Free shipping</strong> for this product." ;
        }?>
        <!-- END SHOW SHIPPING RATES-->

顺便说一句:这只适用于简单的产品。还没来得及调用相应的简单产品。

于 2012-01-29T10:38:32.593 回答