2010-08-12 7 views
1

j'ai triyng pour changer la page de résultat par défaut de magento, je veux les produits regroupés par catégories, il n'inclut pas les sous-catégories, mais les produits, les critères de recherche est le nom du produit, donc, j'étais triyng pour utiliser la recherche simple defalt de magento, jusqu'à maintenant aucun résultat, peut-être je dois passer outre la recherche et en faire un nouveau, je sais que avec ceci je peux obtenir toutes les catégories et sa collection de produit,Magento résultat de recherche à mon chemin

$categories = Mage::getModel('catalog/category') 
->getCollection() 
->addAttributeToSelect('*');  

foreach($categories as $category) 
{ 
    $array = $category->getParentIds(); 
    $children = explode(',',$category->getChildren()); 
    $products = $category->getProductCollection(); 
} 

mais je dois filtrer le nom de produc, le résultat que je suis secting montrer est comme ce

Category I 
    - Product I 
    - Product II 
Category II 
    - Product III 
    - Product IV 
+0

Alors, qu'est-ce que vous demandez? Qu'avez-vous essayé de changer jusqu'à présent? –

Répondre

1

Après quelques jours de codage, j'ai pu obtenir une liste des catégories avec des produits de l'enfant, je vais partager mon code, il serait peut-être aider quelqu'un:

public function getProducts(){ 
    $categories=Mage::getModel('catalog/category')->getCollection(); 
    $result; 
    foreach($categories as $cat) 
    { 
     $temp = null; 
     $_temp = null; 
     $are = false; 
     $_cat = $cat->load(); 
     $temp['category'] = $_cat->getName(); 
     $prod = $_cat->getProductCollection() 
        ->addAttributeToFilter('name', array('like'=>'%'.$this->getRequest()->getParam('q').'%')); 
     foreach($prod as $p){ 
      //die(print_r($p->load())); 
      $_temp[] = $p->load(); 
      $are = true; 
     } 
     if($are){ 
      $temp[] = $_temp; 
      $result[] = $temp; 
     } 
    } 
    return $result; 
} 

Je mets cette fonction un bloc dans mon module personnalisé, cette fonction retourne un tableau avec un autre tableau dans chaque position, puis dans une boucle fichier .phtml vous pouvez comme ce

<?php $productsResult = $this->getProducts(); 
if(count($productsResult)+count($prodnorelatedResult)>0){ ?> 
    <h2>Products</h2> 
     <?php foreach($productsResult as $p){ ?> 
    <h3><?php echo $p['category'] ?></h3> 
    <?php foreach($p[0] as $_p){ ?> 
     <div><a href="<?php echo $_p->getProductUrl()?>"><?php echo $_p->getName() ?></a></div><br/> 
    <?php } ?> 
    <br/> 
<?php } } ?> 

Voici un exemple de la façon dont je montre le nom de la catégorie avec le nom de ses produits sous forme de lien vers la page de détails du produit

J'espère que ça aide!

Questions connexes