Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento:购物车里有某种产品吗?_Php_Magento - Fatal编程技术网

Php Magento:购物车里有某种产品吗?

Php Magento:购物车里有某种产品吗?,php,magento,Php,Magento,在我的list.phtml页面上,我希望我的PHP脚本能够根据商品的SKU判断购物车中是否有商品 所以我的条件理论上是这样的: $_sku = 123; if($_sku->isInBasket() == true){ echo 'Product: ' . $_sku . ' is in the cart'; } 如何切实做到这一点?从签出会话中获取所有数据,并在当前会话中检查产品出口 $quote = Mage::getSingleton('checkout/sessio

在我的list.phtml页面上,我希望我的PHP脚本能够根据商品的SKU判断购物车中是否有商品

所以我的条件理论上是这样的:

$_sku = 123;  

if($_sku->isInBasket() == true){
    echo 'Product: ' . $_sku . ' is in the cart';
}

如何切实做到这一点?

从签出会话中获取所有数据,并在当前会话中检查产品出口

$quote = Mage::getSingleton('checkout/session')->getQuote();

$foundInCart = false;
foreach($quote->getAllVisibleItems() as $item) {
    if ($item->getData('sku') == $_sku) {
        $foundInCart = true;
        break;
    }
}
按sku检查真的很糟糕

因为无论何时都可以配置产品购物车,然后是数据库中的简单产品sku

因此,您需要使用产品id进行检查。对于这种情况,您需要通过
Mage::getModel('catalog')->loadBySku($sku)
找到$sku的id;在每个循环的产品开始之前

$_skuPId='';
$matchPro=Mage::getModel('catalog')->loadBySku($sku);
if($matchPro->getId()){
    $_skuPId=$matchPro->getId();
}


$quote = Mage::getSingleton('checkout/session')->getQuote();

$foundInCart = false;
foreach($quote->getAllVisibleItems() as $item) {
    if ($item->getData('prodduct_id') == $_skuPId) {
        $foundInCart = true;
        break;
    }
}

代码是从这个答案中剽窃的。