2012-04-04 1 views
4

На моей странице сетки продуктов я хотел бы отобразить для каждого продукта «самую глубокую» категорию, в которую он был помещен.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; 

Который дает мне следующий результат:

Screenshot MYSQL results

Так я получил свою коллекцию продукции и три столбца добавляются. Ясно, что для entity_id 310 «Fauteuils» - самая глубокая категория. Единственное, что мне нужно сделать сейчас - это «группировать» результаты по строкам entity_id на самом высоком уровне cat_level. Однако «группа» не дает мне желаемого результата.

Благодаря

ответ

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 столбец в таблице категорий, а затем найти последнюю идентификатор категории на пути.

+0

Спасибо, но у меня нет проблем с получением пути или уровня категории, как вы можете видеть в моем прогрессе до сих пор (и скриншот). Кроме того, загрузка каждой категории не будет очень разумной. –

+0

Это полностью сработало для меня. Это очень приятное решение. – RPDeshaies

Смежные вопросы