2012-04-08 4 views
0

I ont une structure de catégorie comme ça:Trier Magento Collection Produit par catégorie

Root Cat 
    Sub Cat 1 
    Sub Cat 2 
    Sub Cat 3 

et une collection de produits:

$productCollection = Mage::getResourceModel('catalog/product_collection'); 

Maintenant, je voudrais trier les produits dans la collection par catégorie. Les produits Sub Cat 1 devraient venir en premier, puis les produits Sub Cat 2 et enfin Sub Cat 3. Si je change l'ordre des catégories, l'ordre des produits dans la collection devrait également changer. Comment puis-je y parvenir? Un simple $productCollection->addAttributeToSort('category'); ou $productCollection->setOrder('category') ne fonctionne pas.

Merci d'avance!

+0

http://stackoverflow.com/questions/4273898/how-to-sort-a-category-list-array-alphabetically-in-magento –

Répondre

1

Je ne pense pas que vous puissiez réaliser toutes les fonctionnalités que vous souhaitez en modifiant simplement la collection. category n'est pas un attribut. category_ids est, mais quand j'ai essayé de trier dessus, cela n'a eu aucun effet.

Je voudrais obtenir les catégories (dans l'ordre que vous voulez), puis obtenir les produits de ces catégories en utilisant la fonction addCategoryFilter().

Exemple:

$categories = Mage::getModel('catalog/category')->getCollection(); 
foreach ($categories as $category) { 
    echo $category->getId() . ':' . PHP_EOL; 
    $products = Mage::getModel('catalog/product')->getCollection() 
     ->addCategoryFilter($category); 
    foreach ($products as $product) { 
     // Do something 
     echo ' ' . $product->getSku() . PHP_EOL; 
    } 
} 
+0

Merci @nachito! J'espérais qu'il existe une façon native de le faire (principalement pour des raisons de performance), mais il n'y a probablement pas de ... – Simon

Questions connexes