如何使用Magento中的getQuoteItem()在购物车中添加可配置产品
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Magento中的getQuoteItem()在购物车中添加可配置产品相关的知识,希望对你有一定的参考价值。
我想为所有类型的产品设定定制价格。我正在听观察员checkout_cart_product_add_after。在它的功能我使用以下代码来设置产品的自定义价格。
$newPrice = $_POST["txtprice"];
$event = $observer->getEvent();
$minPrice = $observer->getProduct()->getMinPrice();
$quoteItem = $event->getQuoteItem();
if($newPrice > $minPrice){
$quoteItem->setCustomPrice($newPrice);
$quoteItem->setOriginalCustomPrice($newPrice);
$quoteItem->getProduct()->setIsSuperMode(true);
}
此代码适用于简单的产品。对于可配置的产品,它不起作用。 $ quoteItem对象中没有设置购物车的可配置项。因此我无法使用$ quoteItem设置自定义价格。
答案
看到我编辑的答案here:
下面是一些示例代码,您可以在Observer中使用它来侦听
checkout_cart_product_add_after
或checkout_cart_update_items_after
事件。代码在逻辑上是相同的,除了checkout_cart_product_add_after
只调用一个项目,checkout_cart_update_items_after
调用购物车中的所有项目。此代码仅作为示例分离/复制为2个方法。
对于可配置产品,您需要检查$item->getParentItem()
,如该答案中的示例代码所示:
Event: checkout_cart_product_add_after
/**
* @param Varien_Event_Observer $observer
*/
public function applyDiscount(Varien_Event_Observer $observer)
{
/* @var $item Mage_Sales_Model_Quote_Item */
$item = $observer->getQuoteItem();
if ($item->getParentItem()) {
$item = $item->getParentItem();
}
// Discounted 25% off
$percentDiscount = 0.25;
// This makes sure the discount isn't applied over and over when refreshing
$specialPrice = $item->getOriginalPrice() - ($item->getOriginalPrice() * $percentDiscount);
// Make sure we don't have a negative
if ($specialPrice > 0) {
$item->setCustomPrice($specialPrice);
$item->setOriginalCustomPrice($specialPrice);
$item->getProduct()->setIsSuperMode(true);
}
}
Event: checkout_cart_update_items_after
/**
* @param Varien_Event_Observer $observer
*/
public function applyDiscounts(Varien_Event_Observer $observer)
{
foreach ($observer->getCart()->getQuote()->getAllVisibleItems() as $item /* @var $item Mage_Sales_Model_Quote_Item */) {
if ($item->getParentItem()) {
$item = $item->getParentItem();
}
// Discounted 25% off
$percentDiscount = 0.25;
// This makes sure the discount isn't applied over and over when refreshing
$specialPrice = $item->getOriginalPrice() - ($item->getOriginalPrice() * $percentDiscount);
// Make sure we don't have a negative
if ($specialPrice > 0) {
$item->setCustomPrice($specialPrice);
$item->setOriginalCustomPrice($specialPrice);
$item->getProduct()->setIsSuperMode(true);
}
}
}
以上是关于如何使用Magento中的getQuoteItem()在购物车中添加可配置产品的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 facebook 应用程序让 magento 多商店工作
如何修复 Magento 中的错误“无法建立 FTP 连接,无效的主机或端口”
如何根据Magento可配置产品中的不同属性集更改产品图像?