我想显示弹出当产品第一次添加到购物车在Magento和不想显示,如果再次或updated.In短加入该产品的弹出式窗口,我想知道这是会在购物车中添加产品是第一次出现与否?
Answer 1:
答案在很大程度上取决于你想如何处理父/子类型的产品(如果需要)。
如果你只用简单的产品只处理或者您有父/子类型的产品,你需要测试孩子的ID,那么:
$productId = 1;
$quote = Mage::getSingleton('checkout/session')->getQuote();
if (! $quote->hasProductId($productId)) {
// Product is not in the shopping cart so
// go head and show the popup.
}
另外,如果你正在处理的父/子类型的产品和你只是想测试,然后父ID:
$productId = 1;
$quote = Mage::getSingleton('checkout/session')->getQuote();
$foundInCart = false;
foreach($quote->getAllVisibleItems() as $item) {
if ($item->getData('product_id') == $productId) {
$foundInCart = true;
break;
}
}
编辑
有人问在,为什么设置的注册表值注释controller_action_predispatch_checkout_cart_add
不可用cart.phtml检索。
从本质上讲注册表值只能通过单个请求的生命 - 你要留言结帐/车/添加,然后被重定向到结帐/车/索引 - 让你的注册表值都将丢失。
如果你想持续在这些值,那么你可以使用会话来代替:
在您的观察:
Mage::getSingleton('core/session')->setData('your_var', 'your_value');
检索值
$yourVar = Mage::getSingleton('core/session')->getData('your_var', true);
真正的旗帜传递到的getData将从您的会话删除值。
Answer 2:
为了或检查该产品是否已在购物车没有,你可以简单地使用下面的代码:
$productId = $_product->getId(); //or however you want to get product id
$quote = Mage::getSingleton('checkout/session')->getQuote();
$items = $quote->getAllVisibleItems();
$isProductInCart = false;
foreach($items as $_item) {
if($_item->getProductId() == $productId){
$isProductInCart = true;
break;
}
}
var_dump($isProductInCart);
希望这可以帮助!
文章来源: How to check if a Magento product is already added in cart or not?