【发布时间】:2017-11-14 09:16:21
【问题描述】:
我必须通过外部页面将产品添加到同一 URL 下的购物车中。
这些页面之间的区别在于,例如test.de 正在运行 TYPO3,test.de/Shop 正在运行 Magento,test.de/productpage 正在通过 TYPO3 运行外部脚本。
从产品页面,我必须将产品添加到 Magento 购物车才能进行结帐。
关键问题是在 Magento 之外启动会话。
如果我在去test.de/productpage 之前打电话给test.de/Shop/checkout/cart 并将产品添加到购物车中,它会完美运行。
但是,如果我采用正常方式(站点 -> 产品页面 -> 购物车),我无法让 Magento 收听产品页面上的会话。
我有这样的事情要打电话
function addToBasket()
{
require_once('../app/Mage.php');
ob_start();
session_start();
umask(0);
session_write_close();
Mage::app()->setCurrentStore(33);
$session = Mage::getSingleton('core/session', array('name'=>'frontend'));
$productId = !isset($_GET['activeProdId']) ? '' : $_GET['activeProdId'];
$qty = !isset($_GET['qty']) ? '1' : $_GET['qty'];
if(empty($productId)) {
return "no product-id found";
}
$request = Mage::app()->getRequest();
$product = Mage::getModel('catalog/product')->load($productId);
$cart = Mage::helper('checkout/cart')->getCart();
$cart->addProduct($product, array('qty' => $qty));
$session->setLastAddedProductId($product->getId());
$session->setCartWasUpdated(true);
$cart->save();
return true;
}
addToBasket 是通过 ajax 调用的。
所以问题是:如何在 Magento 范围之外开始会话并将产品放入购物车?
【问题讨论】:
标签: php magento magento-1.9