/** * @param Mage_Catalog_Model_Resource_Product_Collection $collection * @param string $currDir * * @return $this */ public function apply($collection, $currDir) { if (!$this->isEnabled()) { return $this; } $sorters = $this->getSorters(); if (Mage::getStoreConfig('amsorting/general/use_index')) { foreach ($sorters as $sorter) { $collection->joinField($sorter->getCode(), $sorter->getIndexTable(), $sorter->getCode(), 'id=entity_id', array('store_id' => Mage::app()->getStore()->getId()), 'left'); } } else { $select = $collection->getSelect(); $col = $select->getPart('columns'); foreach ($sorters as $sorter) { $col[] = array('', $sorter->getColumnSelect(), $sorter->getCode()); } $select->setPart('columns', $col); } $collection->getSelect()->order(new Zend_Db_Expr('(' . $sorters['dividend']->getCode() . '/' . $sorters['divider']->getCode() . ') ' . $currDir)); return $this; }