1

このフォーラムや友人の助けを借りて、次のようなスクリプトを既に作成しています。

 <?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')->load($ruleID);

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

この投稿の情報を使用してこれを行いました: Magento - 注文から価格ルールを取得する

私が変更できること、またはそれを機能させるためにできることを見つけたら、お知らせください。ありがとう!

EDIT 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>';
}

?>
4

1 に答える 1

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)

于 2013-03-02T18:19:56.110 に答える