2014-04-24 103 views
0

我有一个Magento的addProduct()函数的问题。我有以下代码:Magento从外部文件添加产品到购物车不起作用

<?php 
// Mage init 
include_once '../app/Mage.php'; 
umask(0); 
Mage::init('default'); 
Mage::getSingleton('core/session', array('name' => 'frontend')); 
// Get customer session 
$session = Mage::getSingleton('customer/session');  
// Get cart instance 
$cart = Mage::getSingleton('checkout/cart'); 
$cart->init();  
// Add a product with custom options 
$productId = 11348; 
$productInstance = Mage::getModel('catalog/product')->load($productId); 
$param = array(
    'product' => $productInstance->getId(), 
    'qty' => 1, 
    'options' => array(
     528 => '1756', // Custom option with id: 528 
     527 => '1753', // Custom option with id: 527 
     526 => '1751' // Custom option with id: 526 
    ) 
); 
$request = new Varien_Object(); 
$request->setData($param); 
$cart->addProduct($productInstance, $request);  
// update session 
$session->setCartWasUpdated(true);  
// save the cart 
$cart->save();  
?> 

昨天工作这么包括和$ param开头的分辩,但现在它不工作。 您也可以将本产品添加到购物车内的商店,使产品存在,它有货。 此代码似乎没有任何错误,但不会将产品添加到购物车。

感谢您的帮助。

+0

尝试将此文件放在主magento目录中,以便您的include_once应该说'app/Mage.php'并测试它以查看它是否有效。 –

回答

0

尝试添加form keyuenc

$param = array(
'product' => $productInstance->getId(), 
'form_key'=>$form_key_put_here, 
'uenc' =>Mage::app()->getRequest()->getParam('uenc', 1), 
'qty' => 1, 
'options' => array(
    528 => '1756', // Custom option with id: 528 
    527 => '1753', // Custom option with id: 527 
    526 => '1751' // Custom option with id: 526 
)); 

希望这将有助于。

+0

谢谢,但这不起作用:( 无论如何,我不知道什么形式的关键和uenc是什么,为什么他们是必要的 – user3567975

1
<?php 
require_once('app/Mage.php');  
umask(0); 
Mage::app('admin'); 
$product_model = Mage::getModel('catalog/product'); 
$my_product_sku = 'test';   
$my_product_id = $product_model->getIdBySku($my_product_sku); 
$my_product  = $product_model->load($my_product_id); 
$qty_value = 13; 
$cart = Mage::getModel('checkout/cart'); 
$cart->init(); 
$cart->addProduct($my_product, array('qty' => $qty_value)); 
$cart->save(); 

Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
?> 
+0

我认为这是同样的事情即时消息做,但我已经有产品编号,所以我没有需要sku我也需要在我的产品中添加自定义选项,所以你的代码不适合我,谢谢你 – user3567975

相关问题