在我的产品网格页面上,我想为每个产品显示已放置的“最深”类别。
这是我到目前为止所提出的,基于其他一些类似问题的话题。
$res = Mage::getSingleton('core/resource');
$eav = Mage::getModel('eav/config');
$nameattr = $eav->getAttribute('catalog_category', 'name');
$nametable = $res->getTableName('catalog/category') . '_' . $nameattr->getBackendType();
$nameattrid = $nameattr->getAttributeId();
$collection
->joinTable('catalog/category_product',
'product_id=entity_id', array('single_category_id' => 'category_id'),
null,'left')
->joinTable('catalog_category_entity',
"entity_id=single_category_id", array('cat_level' => 'level','cat_path' => 'path'),
null,'left')
//->addAttributeToSort('entity_id', 'ASC')
//->addAttributeToSort('cat_level', 'ASC')
//->groupByAttribute('entity_id')
->joinTable($nametable,
"entity_id=single_category_id", array('single_category_name' => 'value'),
"attribute_id=$nameattrid", 'left')
->printLogQuery(true);exit;
这给了我以下结果:
所以我收到了产品系列,并添加了三列。显然,对于entity_id 310,'Fauteuils'是最深的类别。我现在要做的唯一事情是通过entity_id基于最高cat_level对结果进行“分组”。然而,'分组'并没有给我预期的结果。
由于
答案 0 :(得分:4)
这是一个简单的解决方案,您可以从以下方面获取想法:
$category = $product->getCategory();
$path = explode('/', $category->getPath());
$deepestId = $path[count($path) - 1];
$deepestCategory = Mage::getModel('catalog/category')->load($deepestId);
Zend_Debug::dump($deepestCategory->getData());exit;
您需要查看类别表中的path
列,然后在路径中找到最后一个类别ID。