【问题标题】:Can we add more than one special price in magento using price type attribute?我们可以使用价格类型属性在 magento 中添加多个特价吗?
【发布时间】:2014-01-06 12:11:50
【问题描述】:

我已经定义了价格值的产品,如果我没有为该产品提供特价,我想使用某些属性显示价格和特价以外的其他价格。

当用户将产品添加到购物车时,这个新价格应该应用于产品。

如果可以,这在 magento 中是否可行,我该如何实现?

更新

config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <New_Price>
            <version>1.0.0</version>
        </New_Price>
    </modules>
   <global>
      <models>
            <price>
                <class>New_Price_Model</class>
            </price>            
        </models>     
        <events>
              <checkout_cart_product_add_after>
                    <observers>
                         <price>
                            <type>singleton</type>
                            <class>New_Price_Model_Observer</class>
                            <method>priceTocart</method>
                         </price>
                    </observers>
            </checkout_cart_product_add_after>
        </events>       
   </global>            
</config>

\app\code\local\Sigma\New\Model\Observer.php

Observer.php

class New_Price_Model_Observer extends Mage_Core_Model_Abstract
{
    public function priceTocart($observer)
    {
            Mage::log("hello",null,"pricelog.txt");             
            $quoteItem = $observer->getData();
            foreach($quoteItem as $cartItem)
            {                       
                echo $cartItem->getId()."<br>";
                echo $cartItem->getSpecialPrice()."<br>";
                echo $cartItem->getFinalPrice()."<br>";

                echo $cartItem->getRegularPrice()."<br>";

                echo $cartItem['regularprice']."<br>"; //This is my attribute values.I want to apply this value instead of final price.
            }           

    }
}   
?>

或者是否可以改变计算特价的方式。如果是,我需要覆盖哪个文件。

【问题讨论】:

    标签: magento magento-1.7


    【解决方案1】:

    可以比较简单地完成。首先,您需要扩展产品视图块并添加一个功能来检查您是否需要在产品页面上显示自定义价格。或者创建一个帮助函数,您可以将产品对象传递到该函数中。然后,您可以在 view.phtml 模板中使用此功能,根据需要显示自定义价格。

    如果您希望它显示正常价格在哪里(即替换它),您需要修改您的 price.phtml 文件以进行检查并将自定义属性显示为价格(price.phtml 是一个复杂的文件,但请查看特价是怎么做的)。

    要更改添加到购物篮的价格,您只需为checkout_cart_product_add_after 事件创建一个事件观察者。您可以在此处访问报价项目,并且可以执行检查(即是否有特价)并使用

    为报价项目设置自定义价格
    $product = Mage::getModel('catalog/product')->load( $cartItem->getProductId() );    
    $cartItem->setOriginalCustomPrice($product->getRegularprice());
    

    【讨论】:

    • 我有一个产品属性作为常规价格,我在那里提供了一些价值。我希望将此值用作产品最终价格。我该如何在您建议的观察者中做到这一点。我已经创建了观察者。
    • 已更新我的答案以反映您的变量。未经测试,但关键是在报价项目对象上设置原始自定义价格。 Magento 然后相应地重新计算价格和税收设置。您需要添加特殊价格等支票,并根据需要设置原始自定义价格。
    • Swatten 我收到致命错误:在非对象上调用成员函数 getData()
    • 尝试更新的答案。如果不能确保您可以从产品对象中获取价格属性并进行一些老式调试。要测试设置原始自定义价格是否有效,您可以简单地执行“$cartItem->setOriginalCustomPrice(999.99);”之类的操作。
    • 您的解决方案运行良好。但每次将产品添加到购物车时,我都会添加两次。
    【解决方案2】:

    您只能添加一个特价。 如果你想用另一个属性来做这个,那么你必须重写价格索引。

    但您可以创建“目录产品规则”并作为参考使用产品的 sku。

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      相关资源
      最近更新 更多