Replace
return ($perPageValues + array('all'=>$this->__('All')));in /app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php (lines 549 and 539). by
return $perPageValues;
<?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Mage * @package Mage_Catalog * @copyright Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ /** * Product list toolbar * * @category Mage * @package Mage_Catalog * @author Magento Core Team*/ class Mage_Catalog_Block_Product_List_Toolbar extends Mage_Page_Block_Html_Pager { /** * GET parameter order variable * * @var string */ protected $_orderVarName = 'order'; /** * GET parameter direction variable * * @var string */ protected $_directionVarName = 'dir'; /** * GET parameter mode variable * * @var string */ protected $_modeVarName = 'mode'; /** * List of available order fields * * @var array */ protected $_availableOrder = array(); /** * List of available view types * * @var string */ protected $_availableMode = array(); /** * Is enable View switcher * * @var bool */ protected $_enableViewSwitcher = true; /** * Is Expanded * * @var bool */ protected $_isExpanded = true; /** * Default Order field * * @var string */ protected $_orderField = null; /** * Default direction * * @var string */ protected $_direction = 'asc'; /** * Default View mode * * @var string */ protected $_viewMode = null; /** * Retrieve Catalog Config object * * @return Mage_Catalog_Model_Config */ protected function _getConfig() { return Mage::getSingleton('catalog/config'); } /** * Init Toolbar * */ protected function _construct() { parent::_construct(); $this->_orderField = Mage::getStoreConfig( Mage_Catalog_Model_Config::XML_PATH_LIST_DEFAULT_SORT_BY ); $this->_availableOrder = $this->_getConfig()->getAttributeUsedForSortByArray(); switch (Mage::getStoreConfig('catalog/frontend/list_mode')) { case 'grid': $this->_availableMode = array('grid' => $this->__('Grid')); break; case 'list': $this->_availableMode = array('list' => $this->__('List')); break; case 'grid-list': $this->_availableMode = array('grid' => $this->__('Grid'), 'list' => $this->__('List')); break; case 'list-grid': $this->_availableMode = array('list' => $this->__('List'), 'grid' => $this->__('Grid')); break; } $this->setTemplate('catalog/product/list/toolbar.phtml'); } /** * Set collection to pager * * @param Varien_Data_Collection $collection * @return Mage_Catalog_Block_Product_List_Toolbar */ public function setCollection($collection) { parent::setCollection($collection); if ($this->getCurrentOrder()) { $this->getCollection()->setOrder($this->getCurrentOrder(), $this->getCurrentDirection()); } return $this; } /** * Retrieve order field GET var name * * @return string */ public function getOrderVarName() { return $this->_orderVarName; } /** * Retrieve sort direction GET var name * * @return string */ public function getDirectionVarName() { return $this->_directionVarName; } /** * Retrieve view mode GET var name * * @return string */ public function getModeVarName() { return $this->_modeVarName; } /** * Retrieve current order field * * @return string */ public function getCurrentOrder() { $orders = $this->getAvailableOrders(); $order = $this->getRequest()->getParam($this->getOrderVarName()); if ($order && isset($orders[$order])) { Mage::getSingleton('catalog/session')->setSortOrder($order); } else { $order = Mage::getSingleton('catalog/session')->getSortOrder(); } // validate session value if (!isset($orders[$order])) { $order = $this->_orderField; } // validate has order value if (!isset($orders[$order])) { $keys = array_keys($orders); $order = $keys[0]; } return $order; } /** * Retrieve current direction * * @return string */ public function getCurrentDirection() { $directions = array('asc', 'desc'); $dir = strtolower($this->getRequest()->getParam($this->getDirectionVarName())); if ($dir && in_array($dir, $directions)) { Mage::getSingleton('catalog/session')->setSortDirection($dir); } else { $dir = Mage::getSingleton('catalog/session')->getSortDirection(); } // validate direction if (!$dir || !in_array($dir, $directions)) { $dir = $this->_direction; } return $dir; } /** * Set default Order field * * @param string $field * @return Mage_Catalog_Block_Product_List_Toolbar */ public function setDefaultOrder($field) { if (isset($this->_availableOrder[$field])) { $this->_orderField = $field; } return $this; } /** * Set default sort direction * * @param string $dir * @return Mage_Catalog_Block_Product_List_Toolbar */ public function setDefaultDirection($dir) { if (in_array(strtolower($dir), array('asc', 'desc'))) { $this->_direction = strtolower($dir); } return $this; } /** * Retrieve available Order fields list * * @return array */ public function getAvailableOrders() { return $this->_availableOrder; } /** * Set Available order fields list * * @param array $orders * @return Mage_Catalog_Block_Product_List_Toolbar */ public function setAvailableOrders($orders) { $this->_availableOrder = $orders; return $this; } /** * Add order to available orders * * @param string $order * @param string $value * @return Mage_Catalog_Block_Product_List_Toolbar */ public function addOrderToAvailableOrders($order, $value) { $this->_availableOrder[$order] = $value; return $this; } /** * Remove order from available orders if exists * * @param string $order * @param Mage_Catalog_Block_Product_List_Toolbar */ public function removeOrderFromAvailableOrders($order) { if (isset($this->_availableOrder[$order])) { unset($this->_availableOrder[$order]); } return $this; } /** * Compare defined order field vith current order field * * @param string $order * @return bool */ public function isOrderCurrent($order) { return ($order == $this->getCurrentOrder()); } /** * Retrieve Pager URL * * @param string $order * @param string $direction * @return string */ public function getOrderUrl($order, $direction) { if (is_null($order)) { $order = $this->getCurrentOrder() ? $this->getCurrentOrder() : $this->_availableOrder[0]; } return $this->getPagerUrl(array( $this->getOrderVarName()=>$order, $this->getDirectionVarName()=>$direction, $this->getPageVarName() => null )); } /** * Retrieve current View mode * * @return string */ public function getCurrentMode() { $mode = $this->getRequest()->getParam($this->getModeVarName()); if ($mode) { Mage::getSingleton('catalog/session')->setDisplayMode($mode); } else { $mode = Mage::getSingleton('catalog/session')->getDisplayMode(); } if ($mode && isset($this->_availableMode[$mode])) { return $mode; } return current(array_keys($this->_availableMode)); } /** * Compare defined view mode with current active mode * * @param string $mode * @return bool */ public function isModeActive($mode) { return $this->getCurrentMode() == $mode; } /** * Retrieve availables view modes * * @return array */ public function getModes() { return $this->_availableMode; } /** * Set available view modes list * * @param array $modes * @return Mage_Catalog_Block_Product_List_Toolbar */ public function setModes($modes) { if(!isset($this->_availableMode)){ $this->_availableMode = $modes; } return $this; } /** * Retrive URL for view mode * * @param string $mode * @return string */ public function getModeUrl($mode) { return $this->getPagerUrl( array($this->getModeVarName()=>$mode, $this->getPageVarName() => null) ); } /** * Disable view switcher * * @return Mage_Catalog_Block_Product_List_Toolbar */ public function disableViewSwitcher() { $this->_enableViewSwitcher = false; return $this; } /** * Enable view switcher * * @return Mage_Catalog_Block_Product_List_Toolbar */ public function enableViewSwitcher() { $this->_enableViewSwitcher = true; return $this; } /** * Is a enabled view switcher * * @return bool */ public function isEnabledViewSwitcher() { return $this->_enableViewSwitcher; } /** * Disable Expanded * * @return Mage_Catalog_Block_Product_List_Toolbar */ public function disableExpanded() { $this->_isExpanded = false; return $this; } /** * Enable Expanded * * @return Mage_Catalog_Block_Product_List_Toolbar */ public function enableExpanded() { $this->_isExpanded = true; return $this; } /** * Check is Expanded * * @return bool */ public function isExpanded() { return $this->_isExpanded; } /** * Retrieve default per page values * * @return string (comma separated) */ public function getDefaultPerPageValue() { if ($this->getCurrentMode() == 'list') { if ($default = $this->getDefaultListPerPage()) { return $default; } return Mage::getStoreConfig('catalog/frontend/list_per_page'); } elseif ($this->getCurrentMode() == 'grid') { if ($default = $this->getDefaultGridPerPage()) { return $default; } return Mage::getStoreConfig('catalog/frontend/grid_per_page'); } return 0; } /** * Add new limit to pager for mode * * @param string $mode * @param string $value * @param string $label * @return Mage_Catalog_Block_Product_List_Toolbar */ public function addPagerLimit($mode, $value, $label='') { if (!isset($this->_availableLimit[$mode])) { $this->_availableLimit[$mode] = array(); } $this->_availableLimit[$mode][$value] = empty($label) ? $value : $label; return $this; } /** * Retrieve available limits for current view mode * * @return array */ public function getAvailableLimit() { if ($this->getCurrentMode() == 'list') { if (isset($this->_availableLimit['list'])) { return $this->_availableLimit['list']; } $perPageValues = (string)Mage::getStoreConfig('catalog/frontend/list_per_page_values'); $perPageValues = explode(',', $perPageValues); $perPageValues = array_combine($perPageValues, $perPageValues); return $perPageValues; } elseif ($this->getCurrentMode() == 'grid') { if (isset($this->_availableLimit['grid'])) { return $this->_availableLimit['grid']; } $perPageValues = (string)Mage::getStoreConfig('catalog/frontend/grid_per_page_values'); $perPageValues = explode(',', $perPageValues); $perPageValues = array_combine($perPageValues, $perPageValues); return $perPageValues; } return parent::getAvailableLimit(); } /** * Retrieve current limit per page * * @return string */ public function getLimit() { $limits = $this->getAvailableLimit(); $limit = $this->getRequest()->getParam($this->getLimitVarName()); if ($limit && isset($limits[$limit])) { Mage::getSingleton('catalog/session')->setLimitPage($limit); } else { $limit = Mage::getSingleton('catalog/session')->getLimitPage(); } if (isset($limits[$limit])) { return $limit; } if ($limit = $this->getDefaultPerPageValue()) { if (isset($limits[$limit])) { return $limit; } } $limits = array_keys($limits); return $limits[0]; } /** * Retrieve Limit Pager URL * * @param int $limit * @return string */ public function getLimitUrl($limit) { return $this->getPagerUrl(array( $this->getLimitVarName() => $limit, $this->getPageVarName() => null )); } } ?>