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
对象。
只有在没有分配给产品的类别时,您才会在system.log中获得一个空数组。 (代码中的第4行) 没有黑魔法。使用NetBeans等标准IDE,并引用类和它们的功能。他们足以找到答案。 – Harit 2014-11-21 09:20:03
你错了。在他的代码的第4行中,他试图从报价项目对象中获取类别ID。您无法从报价项目对象获取类别ID。 – muhammedv 2014-11-21 09:22:12
特赦,但请在你的评论前仔细检查他的代码。 $ 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