2014-11-21 83 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

相關問題