2017-10-18 9 views
0

Je passe dans une chaîne de requête avec les paramètres order=price&dir=desc pour classer par prix de gros à petit. Dans le fichier de gabarit list.phtml Mage_Catalog_Model_Resource_Product_Collection a la propriété d'un tableau vide, donc la page se rafraîchit mais retourne avec la même collection par défaut.D'où vient Magento trier/trier la collection dans la page de la catégorie

J'ai essayé d'exécuter mysqladmin -u -p -i 1 processlist pour afficher les requêtes sur la base de données, mais aucune requête sur les produits n'a été transmise (le cache est désactivé).

J'ai essayé de débogage, mais apparemment il fonctionne par les événements et il est très difficile pour moi de trouver dans quelles classes:

1. requête acctual à la DB arrive

2. Le tri a lieu

Peut-être que quelqu'un a une certaine expérience pourquoi il ne trier. Merci.

Répondre

0

// Première classe inférieure à la classe de tri.

File Path : Mage/Catalog/Block/Product/List/Toolbar.php 

// Fonction suivante utilisée pour le tri de la collection.

public function setCollection($collection) 
    { 
     $this->_collection = $collection; 

     $this->_collection->setCurPage($this->getCurrentPage()); 

     // we need to set pagination only if passed value integer and more that 0 
     $limit = (int)$this->getLimit(); 
     if ($limit) { 
      $this->_collection->setPageSize($limit); 
     } 
       if($this->getCurrentOrder() == 'review'){ 
      $this->_collection->sortByReview($this->getCurrentDirection()); 
     } 
     else if ($this->getCurrentOrder()) { 
      $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection()); 
     } 
     return $this; 
    }