На моей странице сетки продуктов я хотел бы отобразить для каждого продукта «самую глубокую» категорию, в которую он был помещен.Magento найти самую глубокую категорию для каждого продукта
Это то, что я до сих пор придумал, основываясь на некоторых других темах о похожих вопросах.
$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. Однако «группа» не дает мне желаемого результата.
Благодаря
Спасибо, но у меня нет проблем с получением пути или уровня категории, как вы можете видеть в моем прогрессе до сих пор (и скриншот). Кроме того, загрузка каждой категории не будет очень разумной. –
Это полностью сработало для меня. Это очень приятное решение. – RPDeshaies