До Magento 1.7 я смог использовать следующий код для добавления продукта в корзину программно:
require_once '../app/Mage.php'; Mage::getSingleton('core/session', array('name' => 'frontend')); umask(0); Mage::app(); $session = Mage::getSingleton('customer/session'); $product = Mage::getModel('catalog/product')->load(99); // Random product ID // get cart and add product $cart = Mage::getSingleton('checkout/cart'); $cart->init(); $cart->addProduct($product, 1); // update session $session->setCartWasUpdated(true); // save the cart $cart->save();
Однако это не работает в Magento 1.8. Я пробовал / искал весь день, почему это так. К сожалению, я не нашел никакого представления об этой проблеме.
Возможно, это связано с изменениями в 1.8, что также вызывает необходимость использования ключа формы при использовании метода URL; это дикая догадка.
Любая идея или рабочий пример о том, как это сделать при работе с Magento 1.8?
Если бы свежий взгляд на него и сразу понял, что он работает. Просто для ссылки на кого-нибудь, вот код, который я использую (Magento 1.8):
// Mage init require_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 (simple); id:12, qty: 3 $cart->addProduct(12, 3); // Add a product with custom options $productInstance = Mage::getModel('catalog/product')->load($productId); $param = array( 'product' => $productInstance->getId(), 'qty' => 1, 'options' => array( 234 => 'A value' // Custom option with id: 234 ) ); $request = new Varien_Object(); $request->setData($param); $cart->addProduct($productInstance, $request); // Set shipping method $quote = $cart->getQuote(); $shippingAddress = $quote->getShippingAddress(); $shippingAddress->setShippingMethod('flatrate_flatrate')->save(); // update session $session->setCartWasUpdated(true); // save the cart $cart->save();
по// Mage init require_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 (simple); id:12, qty: 3 $cart->addProduct(12, 3); // Add a product with custom options $productInstance = Mage::getModel('catalog/product')->load($productId); $param = array( 'product' => $productInstance->getId(), 'qty' => 1, 'options' => array( 234 => 'A value' // Custom option with id: 234 ) ); $request = new Varien_Object(); $request->setData($param); $cart->addProduct($productInstance, $request); // Set shipping method $quote = $cart->getQuote(); $shippingAddress = $quote->getShippingAddress(); $shippingAddress->setShippingMethod('flatrate_flatrate')->save(); // update session $session->setCartWasUpdated(true); // save the cart $cart->save();