Mage_Catalog_Block_Product_List_Toolbar
Find the getAvailableOrders() and made some modification.
public function getAvailableOrders() { $orders = array( 'news_from_date,entity_id' => 'Newest', 'name,brand' => 'Brand Name', 'rating' => 'Top Rated', ); $this->_availableOrder = $orders; return $orders; }
Also try to look setCollection($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()) { // parse the attribute $orders = explode(',', $this->getCurrentOrder()); foreach($orders as $order){ // Add the other statement for to sort $this->_collection->setOrder($order, $this->getCurrentDirection()); } return $this; }
Thanks just simple code to made multiple sorting. But i not suggest you to modify the magento core as is. if you can able to override class it better.
class Globe_Catalog_Block_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar{ // Your method you want here and method you want to override, some example. 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()) { // parse the attribute $orders = explode(',', $this->getCurrentOrder()); foreach($orders as $order){ // Add the other statement for to sort $this->_collection->setOrder($order, $this->getCurrentDirection()); } return $this; } // ... You other method. }
No comments:
Post a Comment