启用免运费规则时显示“免费送货文本”

时间:2013-03-01 10:41:14

标签: php magento

在这个论坛和朋友的帮助下制作了一个剧本,如:

 <?php
 // Determine if product "free shipping" is true
if ($_product->getFreeShipping())
{
echo '<span class="freeShip">'.$_product->getAttributeText('free_shipping').'</span>';
}

 // Determine if product costs more than 65
else if ($_specialPrice = $_product->getFinalPrice() > 65)
{
echo '<span class="freeShip">FREE SHIPPING ON THIS PRODUCT!</span>';
}
?>

这非常有效,但现在我还希望在启用名为“免费送货规则”的定价规则时显示“免费送货此产品”文字。此价格规则确保所选产品免费送货。

我已经制作了一个简短的代码,但不知道如何更进一步。             //加载规则对象             $ rule = Mage :: getModel('catalogrule / rule') - &gt; load($ ruleID);

        if ($_product->$rule->getName() = Free Shipping Rule)
        {
        echo '<span class="freeShip">FREE SHIPPING ON THIS PRODUCT!</span>';
        }

使用此帖子中的信息完成此操作:Magento - get price rules from order

如果您看到我可以更改的内容,或者我可以做些什么来使其发挥作用,请告诉我们!谢谢!

编辑1: 我想我们也可以在获取有关运费的信息时这样做。我觉得“如果运费= 0,显示”这个产品免费送货“。只是在互联网上找到了一些东西,然后编辑了一下。你觉得这段代码能用吗?

<?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)
}
// Check the product shipping price
php if ($rate->getPrice() == 0)
{
echo '<span class="freeShip">FREE SHIPPING ON THIS PRODUCT!</span>';
}
?>

编辑2:编辑下面的代码,但仍然无法正常工作。看起来很好,不是吗?

<?php
 // Determine if product "free shipping" is true
if ($_product->getGratisVerzending())
{
echo '<span class="freeShip">'.$_product->getAttributeText('gratis_verzending').'</span>';
}

 // Determine if product costs more than 65
else if ($_specialPrice = $_product->getFinalPrice() > 65)
{
echo '<span class="freeShip">GRATIS VERZONDEN!</span>';
}

$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)

// Determine if shipping is 0
else if ($rate->getPrice() == 0)
{
echo '<span class="freeShip">FREE SHIPPING ON THIS PRODUCT!</span>';
}

?>

1 个答案:

答案 0 :(得分:0)

代码的这些部分中有错误

 // Determine if product costs more than 65
else if ($_specialPrice = $_product->getFinalPrice() > 65)
{
echo '<span class="freeShip">FREE SHIPPING ON THIS PRODUCT!</span>';
}

您正在使用=这是一项作业(返回true),因此无论最终价格如何,都会显示FREE SHIPPING ON THIS PRODUCT!

同样适用于if ($_product->$rule->getName() = Free Shipping Rule)