在magento中添加到购物车之前如何更改价格?
如何在添加到购物车Magento时更改产品价格,例如: 假设我尝试添加一个价格为10美元的产品,我想要 当我添加两种我想要的产品时,用$10*5=$50显示价格 显示$10*10=$100。所以它的公共乘数是5(x的倍数)在magento中添加到购物车之前如何更改价格?,magento,observers,magento-1.9.1,Magento,Observers,Magento 1.9.1,如何在添加到购物车Magento时更改产品价格,例如: 假设我尝试添加一个价格为10美元的产品,我想要 当我添加两种我想要的产品时,用$10*5=$50显示价格 显示$10*10=$100。所以它的公共乘数是5(x的倍数) 在app/community/Custom_Module/Modulename/Model中创建Observer.php文件,并在该文件中复制以下代码 class Custom_Module_Modulename_Model_Observer { public fun
在app/community/Custom_Module/Modulename/Model中创建Observer.php文件,并在该文件中复制以下代码
class Custom_Module_Modulename_Model_Observer
{
public function _construct()
{
}
public function getNewPrice()
{
$login = Mage::getSingleton('customer/session')->isLoggedIn();
$roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$userrole = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
$userrole = strtolower($userrole);
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
}
$batch_qty = $product->getBatchQty();
$actualPrice = $product->getPrice();
$specialPrice = $product->getFinalPrice();
if (isset($batch_qty) && $userrole=="retailer") {
if (isset($specialPrice)) {
$newprice = $specialPrice*$batch_qty;
} else {
$newprice = $actualPrice*$batch_qty;
}
} else {
$newprice= $actualPrice;
}
return $newprice;
}
public function updatePrice($observer)
{
$event = $observer->getEvent();
$product = $event->getProduct();
$quote_item = $event->getQuoteItem();
$new_price = $this->getNewPrice();
$quote_item->setOriginalCustomPrice($new_price);
//$quote_item->save();
$quote_item->getQuote()->save();
//Mage::getSingleton('checkout/cart')->save();
}
}
复制下面的代码并将其粘贴到您的app/community/Custom_Module/Modulename/etc/config.xml内部标记中
> <events>
> <sales_quote_add_item>
> <observers>
> <Custom_Module_Modulename_model_observer>
> <type>singleton</type>
> <class>Custom_Module_Modulename_Model_Observer</class>
> <method>updatePrice</method>
> </Custom_Module_Modulename_model_observer>
> </observers>
> </sales_quote_add_item>
> </events>
>
>
>
>
>独生子女
>自定义模块名称模型观察者
>更新价格
>
>
>
>
这对我来说很好。在app/community/Custom\u Module/Modulename/Model中创建Observer.php文件,在该文件中复制以下代码
class Custom_Module_Modulename_Model_Observer
{
public function _construct()
{
}
public function getNewPrice()
{
$login = Mage::getSingleton('customer/session')->isLoggedIn();
$roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$userrole = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
$userrole = strtolower($userrole);
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
}
$batch_qty = $product->getBatchQty();
$actualPrice = $product->getPrice();
$specialPrice = $product->getFinalPrice();
if (isset($batch_qty) && $userrole=="retailer") {
if (isset($specialPrice)) {
$newprice = $specialPrice*$batch_qty;
} else {
$newprice = $actualPrice*$batch_qty;
}
} else {
$newprice= $actualPrice;
}
return $newprice;
}
public function updatePrice($observer)
{
$event = $observer->getEvent();
$product = $event->getProduct();
$quote_item = $event->getQuoteItem();
$new_price = $this->getNewPrice();
$quote_item->setOriginalCustomPrice($new_price);
//$quote_item->save();
$quote_item->getQuote()->save();
//Mage::getSingleton('checkout/cart')->save();
}
}
复制下面的代码并将其粘贴到您的app/community/Custom_Module/Modulename/etc/config.xml内部标记中
> <events>
> <sales_quote_add_item>
> <observers>
> <Custom_Module_Modulename_model_observer>
> <type>singleton</type>
> <class>Custom_Module_Modulename_Model_Observer</class>
> <method>updatePrice</method>
> </Custom_Module_Modulename_model_observer>
> </observers>
> </sales_quote_add_item>
> </events>
>
>
>
>
>独生子女
>自定义模块名称模型观察者
>更新价格
>
>
>
>
这对我来说很好。为什么不使用分层价格?发现事件观察者有用为什么不使用分层价格?发现事件观察程序可用我正在使用您建议的方法,但现在面临Magento错误。页面上写着“无法将产品添加到购物车”(尽管确实如此)。另外,exception.log文件说,“调试(7):异常消息:无法发送头;头已经发送到/var/www/html/[dev folder]/app/code/local/[namespace]/Price/Model/Observer.php,第1行…Trace:#0/var/www/html/[dev folder]/lib/Zend/Controller/Response/Abstract.php(148):Zend\u Controller\u Response\u Abstract->cansendheader(true)”。此方法对我有效,请尝试启用注释行并检查,同时清除浏览器缓存和磁缓存,并签入Chrome和FireFox,我已删除缓存和Cookie并重新加载页面,它不再工作。我正在使用您建议的方法,但现在面临Magento错误。页面上写着“无法将产品添加到购物车”(尽管确实如此)。另外,exception.log文件说,“调试(7):异常消息:无法发送头;头已经发送到/var/www/html/[dev folder]/app/code/local/[namespace]/Price/Model/Observer.php,第1行…Trace:#0/var/www/html/[dev folder]/lib/Zend/Controller/Response/Abstract.php(148):Zend\u Controller\u Response\u Abstract->cansendheader(true)”。这种方法对我有效,请你尝试启用注释行并检查,同时清除浏览器缓存和磁缓存并签入Chrome和FireFox,我已删除缓存和Cookie并重新加载页面,但它不再工作。