2012-04-04 24 views
4

Auf meiner Produktgrid-Seite möchte ich für jedes Produkt die 'tiefste' Kategorie anzeigen, in die es gelegt wurde.Magento tiefste Kategorie für jedes Produkt finden

Dies ist, was ich bis jetzt gekommen bin, basierend auf einigen anderen Themen über ähnliche Fragen.

$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; 

Was mir das folgende Ergebnis liefert:

Screenshot MYSQL results

Also habe ich mein Produkt Sammlung und drei Spalten hinzugefügt werden. Offensichtlich ist für Entity_id 310 'Fauteuils' die tiefste Kategorie. Das einzige, was ich jetzt tun muss, ist, die Ergebnisse nach Entity_ID-Basen auf dem höchsten cat_level zu gruppieren. "Gruppieren nach" gibt mir jedoch nicht das gewünschte Ergebnis. Hier

Dank

Antwort

4

ist eine einfache Lösung, die Sie Ideen aus nehmen können:

$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; 

Sie werden auf die path Spalte in der Kategorie Tabelle suchen möchten, und dann die letzte Kategorie ID finden in dem Weg.

+0

Danke, aber ich habe kein Problem, den Pfad oder die Kategorie Ebene zu bekommen, wie Sie in meinem bisherigen Fortschritt sehen können (und Screenshot). Außerdem wäre das Laden jeder Kategorie nicht sehr leistungsfähig. –

+0

Es hat total für mich gearbeitet. Dies ist eine sehr schöne Lösung. – RPDeshaies

Verwandte Themen