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块中获取产品类别ID_Php_Magento - Fatal编程技术网

Php 正在Magento块中获取产品类别ID

Php 正在Magento块中获取产品类别ID,php,magento,Php,Magento,在Magento中检索与块中的产品相关联的类别列表时是否涉及某种黑魔法 我试过这个: foreach($quote->getAllVisibleItems() AS $item) { $categories = $item->getCategoryIds(); Mage::log(get_class($item)); Mage::log(print_r($categories, true)); $prod = Mage::getModel('cata

在Magento中检索与块中的产品相关联的类别列表时是否涉及某种黑魔法

我试过这个:

foreach($quote->getAllVisibleItems() AS $item) {
    $categories = $item->getCategoryIds();
    Mage::log(get_class($item));
    Mage::log(print_r($categories, true));

    $prod = Mage::getModel('catalog/product')->load($item->getId());
    Mage::log(get_class($prod));
    Mage::log(print_r($prod->getCategoryIds(), true));
我得到的是:

2014-11-21T08:59:25+00:00 DEBUG (7): Mage_Sales_Model_Quote_Item
2014-11-21T08:59:25+00:00 DEBUG (7):
2014-11-21T08:59:25+00:00 DEBUG (7): Mage_Catalog_Model_Product
2014-11-21T08:59:25+00:00 DEBUG (7): Array
(
)
我也尝试过使用
$prod
对象的
getCategoryCollection()
方法,但我似乎也无法从
Mage\u Catalog\u Model\u Resource\u Category\u Collection
对象中获取任何数据。

$item->getId()不提供产品id,而是提供报价项id。您可以使用$item->>getProductId()

试试这个

$prod = Mage::getModel('catalog/product')->load($item->getProductId());
Mage::log(print_r($prod->getCategoryIds(), true));

仅当没有为产品分配类别时,system.log中才会出现空白数组。(代码第4行)没有黑魔法。使用像netbeans这样的标准IDE,并引用类及其函数。它们足以找到答案。你错了。在代码的第4行中,他尝试从quote item对象获取类别ID。您无法从quote item对象获取类别ID。请原谅,请在您发表评论之前仔细检查他的代码$prod=Mage::getModel('catalog/product')->load($item->getId());它返回给他一个Mage_Catalog_Model_Product的对象。因此,他可以通过使用$prod->getCategoryIds()获得与其关联的类别,但由于没有为产品分配类别,因此它重新获得一个空数组。Mage::log(print_r($prod->getCategoryIds(),true));那是6号线。它可以返回对象,但不加载产品。因为$item->getId()不提供“产品id”。仔细检查你自己。很抱歉搞混了,我说的是日志文件的第4行。