2017-09-04 1 views
0

Je suis nouveau sur prestashop et j'essaie de créer un filtre de produit simple à afficher sur la page catégorie. J'ai réussi à sortir mon filtre sur la page en utilisant le crochet pour la méthode hookDisplayLeftColumn, mais j'ai quelques questions. En ce moment je suis accroché à la colonne de gauche mais le filtre montrera sur n'importe quelle page qui l'a. Je veux l'afficher seulement sur la page de catégorie.Page de la catégorie Filtre de produit

public function hookDisplayLeftColumn($params) 
    { 

     $data = array(
      'bar' => 'foo' 
     ); 

     $this->context->smarty->assign($data); 
     return $this->display(__FILE__, 'categoryfilter.tpl'); 
    } 

Et c'est la partie difficile.Comment je filtre les produits. Y at-il une méthode que je peux accrocher et filtrer les résultats?

Répondre

1

Si vous voulez inclure uniquement votre code dans les pages de catégorie utiliser quelque chose comme:

public function hookDisplayLeftColumn($params) 
{ 
    if (!isset($this->context->controller->php_self) or $this->context->controller->php_self != 'category') 
     return false; 

    $data = array(
     'bar' => 'foo' 
    ); 

    $this->context->smarty->assign($data); 
    return $this->display(__FILE__, 'categoryfilter.tpl'); 
} 
+0

Ok cool.Comment filtrer les résultats? – nikksan

1

Vous pouvez accrocher à actionProductListOverride.

Crochet est exécuté dans CategoryController

Comme vous pouvez le voir, vous obtenez trois propriétés en tableau params. Parce qu'ils sont transmis par référence, vous pouvez leur attribuer votre propre liste de produits filtrés et CategoryController aura vos données filtrées.

Assurez-vous que vous définissez hookExecuted à true, également la structure de données de catProducts doit correspondre à celui qui CategoryController génère normalement et nbProducts devraient avoir le nombre total de vos produits filtrés.

Pour la première partie de votre question, sadlyblue vous a donné la réponse.

+0

Bonne explication! Malheureusement, je ne peux pas marquer les deux réponses comme résolues. – nikksan