我有以下问题: 我在前端通过jQuery进行计算,并希望将产品添加到购物车中,并在前端计算价格。
我已经用AjaxController编写了一个自定义模块来实现添加到购物车部分,但我知道设置定制价格很困难。
我的脚本如下所示:
$_prod = json_decode(Mage::app()->getRequest()->getPost('zapfsaeule_product'));
$id = 347; // there is only this one bundle product added to the cart viar this scipt, so a static id is enough.
$params = array(
'product' => $id,
'related_product' => null,
'bundle_option' => array(
6 => 17, // static options for testing purpouses
5 => 13), //
'qty' => 1 // static qty for testing as well
);
$cart = Mage::getSingleton('checkout/cart');
$product = new Mage_Catalog_Model_Product();
$product->load($id);
$cart->addProduct($product, $params);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
$this->getResponse()->setBody('true'); // setting response to true, because its an ajax request.
$this->getResponse()->setHeader('Content-type', 'text/plain');
这是添加产品的代码。 为了设置价格,我尝试了在stackexchange上的这个线程中提到的方法: https://magento.stackexchange.com/questions/4318/dynamically-calculated-prices-save-before-add-to-cart
但它没有用。我想这里观察到的事件不会出现在我的情况下,因为我写了一个自定义脚本。
但是那时仍然存在问题,如果观察者方法有效,我将如何将计算出的价格传递给观察者?
我希望你能理解这个问题并帮助我解决它。
提前致谢!
祝你好运, 马丁
答案 0 :(得分:1)
通过Mage_Checkout_Model_Cart::addProduct()
阅读,似乎没有办法根据参数设置商品的价格。相反,您需要添加产品,然后获取结果项并设置其价格:
$cart->addProduct($product, $params)
->save();
// grab the corresponding item
$item = $cart->getQuote()->getItemByProduct($product);
// set its custom price
$item->setOriginalCustomPrice($customPrice)
->save();
Haven没有时间尝试这个,但这应该是正确的想法。确保您设置original_custom_price
字段(使用setOriginalCustomPrice()
),而不是其他价格之一。其他价格在总计过程中重新计算。
答案 1 :(得分:0)
这很晚了,但我偶然发现了这一点。
我让它像这样工作:
print("identityId", identityId)
答案 2 :(得分:-1)
如果参数不起作用,请从$cart->addProduct
获取退回的项目,并在保存购物车之前更改项目的价格。
$item = $cart->addProduct(...);
$item->setCustomPrice(...); {or whatever price attribute you like to set}
$cart->save();