我是magento的初学者 . 我需要将动态价格从详细页面传递到购物车 .
现在,当我通过动态价格时,它没有在购物车中更新,而是由产品的原始价格取代 .
任何帮助将不胜感激 . 在这一行,我得到了价格 . $price=$this->getRequest()->getParam('price_custom');
Indexcontroller.php
public function cartAction()
{
if ($this->getRequest()->getParam('cart')){
if ($this->getRequest()->getParam('cart') == "delete"){
$id = $this->getRequest()->getParam('id');
if ($id) {
try {
Mage::getSingleton('checkout/cart')->removeItem($id)
->save();
} catch (Exception $e) {
Mage::getSingleton('checkout/session')->addError($this->__('Cannot remove item'));
}
}
}
}
if ($this->getRequest()->getParam('product')) {
$cart = Mage::getSingleton('checkout/cart');
$params = $this->getRequest()->getParams();
$related = $this->getRequest()->getParam('related_product');
$price=$this->getRequest()->getParam('price_custom');
$productId = (int) $this->getRequest()->getParam('product');
if ($productId) {
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($productId);
try {
if (!isset($params['qty'])) {
$params['qty'] = 1;
}
$cart->addProduct($product, $params);
if (!empty($related)) {
$cart->addProductsByIds(explode(',', $related));
}
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
Mage::getSingleton('checkout/session')->setCartInsertedItem($product->getId());
$img = '';
Mage::dispatchEvent('checkout_cart_add_product_complete', array('product'=>$product, 'request'=>$this->getRequest()));
$photo_arr = explode("x",Mage::getStoreConfig('mdlajaxcheckout/default/mdl_ajax_cart_image_size', Mage::app()->getStore()->getId()));
$img = '<img src="'.Mage::helper('catalog/image')->init($product, 'image')->resize($photo_arr[0],$photo_arr[1]).'" width="'.$photo_arr[0].'" height="'.$photo_arr[1].'" />';
$message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
Mage::getSingleton('checkout/session')->addSuccess('<div class="mdlajax-checkout-img">'.$img.'</div><div class="mdlajax-checkout-txt">'.$message.'</div>');
}
catch (Mage_Core_Exception $e) {
if (Mage::getSingleton('checkout/session')->getUseNotice(true)) {
Mage::getSingleton('checkout/session')->addNotice($e->getMessage());
} else {
$messages = array_unique(explode("\n", $e->getMessage()));
foreach ($messages as $message) {
Mage::getSingleton('checkout/session')->addError($message);
}
}
}
catch (Exception $e) {
Mage::getSingleton('checkout/session')->addException($e, $this->__('Can not add item to shopping cart'));
}
}
}
$this->loadLayout();
$this->_initLayoutMessages('checkout/session');
$this->renderLayout();
}
Observer.php
class Mdl_Ajaxcheckout_Model_Observer
{
public function modifyPrice(Varien_Event_Observer $obs)
{
// Get the quote item
$item = $obs->getQuoteItem();
// Ensure we have the parent item, if it has one
$item = ( $item->getParentItem() ? $item->getParentItem() : $item );
// Load the custom price
$price =$item->getRequest()->getParam('price_custom');
// Set the custom price
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
// Enable super mode on the product.
$item->getProduct()->setIsSuperMode(true);
}
}
请建议 .
2 回答
在向购物车添加商品时,Magento不提供添加自定义价格的功能 . 这是我偶尔使用过的解决方案 .
您可以使用观察者类来收听checkout_cart_product_add_after,并使用产品的“超级模式”来针对报价项目设置自定义价格 .
在/app/code/local///etc/config.xml中:
然后在/app/code/local///Model/Observer.php创建一个Observer类
您必须在get_final_price上创建Observer以获得自定义价格
请查看以下链接
http://www.magentocommerce.com/wiki/5_-modules_and_development/0-_module_development_in_magento/customizing_magento_using_event-observer_method
在哪里适用价格折扣 . 我认为这是帮助 . 如果你还有问题,请告诉我 .