comment optimiser le chargement de toutes les catégories avec l'image

8

en ce moment, j'ai deux foreach imbriqués pour parcourir toute la catégorie, et c'est extrêmement lent (3-4s sur mon serveur local). Je pense que le problème est que j'utilise -> LOAD () pour obtenir le chemin de l'image pour la catégorie enfant. existe-t-il une autre façon de procéder? ou je devrais juste repenser toute l'interface de navigation? toute suggestion?

$categories = Mage::getSingleton('catalog/category')
    ->getCollection()
    ->addAttributeToSelect('id')
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('url_key')
    ->addAttributeToSelect('url')
    ->addAttributeToFilter('level',2)
    ->addIsActiveFilter()
    ->addAttributeToSort('position');

foreach ($categories as $category): 
    $id = $category->getId();
    $children = $category->getChildrenCategories();
    $name = $category->getName();
    $url_path = $category->getUrl();        

    foreach ($children as $child):                                      
        $childId = $child->getId();
        $thisChild = Mage::getSingleton('catalog/category')->load($childId);
        $name = $thisChild->getName();
        $url_key = $thisChild->getUrlKey(); 
        $url_path = $child->getUrl();
        $img = $thisChild->getImageUrl();   
    endforeach;
endforeach;
wlin
la source

Réponses:

3

Je ne sais pas si cela fonctionne même, mais vous pouvez essayer de travailler avec Mage_Catalog_Model_Resource_Category_Tree

Cette classe devrait vous donner la possibilité de parcourir l'arbre, mais après avoir chargé toutes les catégories.

Fabian Blechschmidt
la source