[Magento] Add downloadable products

来源:互联网 发布:wish for mac 编辑:程序博客网 时间:2024/05/17 04:44

Probably you know it’s possible to add a product to the cart via querystring, but may be youprefer code a new module for your needs using Magento objects andmethods.

So adding a simple product is easy:

...$cart = Mage::getSingleton('checkout/cart');// start adding the producttry {$cart->addProduct($product, array('qty' => 1));// save the cart$cart->save();$result = null;} catch (Mage_Core_Exception $e) {$result = $e->getMessage();}

But how to add a Downloadable product with its right link? Justtry this, it’s a controller I used to integrate an “add to cart”API:

public function cartaddAction(){$productId  = (int) $this->getRequest()->getParam('id');$callback  = (string) $this->getRequest()->getParam('callback');$cart = Mage::getSingleton('checkout/cart');// call the Magento catalog/product model$product = Mage::getModel('catalog/product')// set the current store ID->setStoreId(Mage::app()->getStore()->getId())// load the product object->load($productId);$links = Mage::getModel('downloadable/product_type')->getLinks( $product );foreach ( $links as $link )if ( preg_match("/epub/i", $link->getTitle()) )$linkId = $link->getLinkId();// Here is the trick to add the right link id$input = array( 'qty' => 1, 'links' => array( $linkId ) );$request = new Varien_Object();$request->setData($input);// start adding the producttry {$cart->addProduct($product, $request);// save the cart$cart->save();$result = null;} catch (Mage_Core_Exception $e) {$result = $e->getMessage();}// very straightforward, set the cart as updatedMage::getSingleton('checkout/session')->setCartWasUpdated(true);}
原创粉丝点击