2014-11-21 73 views
0

在检索与Magento块中的产品相关的类别列表中是否存在某种黑魔法?在Magento块中获取产品类别ID

我已经试过这样:

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_Catalog_Model_Resource_Category_Collection对象。

回答

2

$ item-> getId()不会给你产品ID,它会给你报价的物品ID。您可以使用$ item-> getProductId()。

试试这个,而不是;

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

只有在没有分配给产品的类别时,您才会在system.log中获得一个空数组。 (代码中的第4行) 没有黑魔法。使用NetBeans等标准IDE,并引用类和它们的功能。他们足以找到答案。 – Harit 2014-11-21 09:20:03

+0

你错了。在他的代码的第4行中,他试图从报价项目对象中获取类别ID。您无法从报价项目对象获取类别ID。 – muhammedv 2014-11-21 09:22:12

+0

特赦,但请在你的评论前仔细检查他的代码。 $ prod = Mage :: getModel('catalog/product') - > load($ item-> getId()); 它向他返回Mage_Catalog_Model_Product的一个对象。 因此,他可以通过使用$ prod-> getCategoryIds()获得与其关联的类别,但由于没有分配给该产品的类别,因此它会重新生成一个空数组。 Mage :: log(print_r($ prod-> getCategoryIds(),true)); – Harit 2014-11-21 09:25:11

相关问题