如何检查是否Magento的产品已经加入购物车或不?(How to check if a Magen

2019-09-20 06:06发布

我想显示弹出当产品第一次添加到购物车在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?
标签: magento