Magento – ordonare după preţul redus

Implicit în Magento (cel puţin în versiunea 1.7) la ordonarea produselor după preţ într-o categorie se ia preţul întreg. În cazul în care avem un produs cu preţ redus, acest preţ redus nu este luat în considerare la ordonare, ci se ia preţul întreg.

Pentru a ordona după preţ asc / desc ţinând cont şi de preţul redus dacă acesta există, a trebuit să modific într-un fişier din core.

/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php

În acest fişier este funcţia setCollection() unde se află următorul cod

if ($this->getCurrentOrder()) {
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
}

pe care l-am înlocuit cu

if ($this->getCurrentOrder()) {
if($this->getCurrentOrder() != 'price')
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
else
$this->_collection->getSelect()->order(array('COALESCE(`e`.`special_price`,`price_index`.`min_price`) '.$this->getCurrentDirection()));
}

aici verific dacă parametrul get ‘order’ are valoarea ‘price’, adică dacă avem o ordonare după preţ. În caz afirmativ, înlocuiesc order by-ul implicit după preţul normal.

Leave a Reply

Your email address will not be published. Required fields are marked *