ylliX - Online Advertising Network

How to sort Magento products by date added as default

Today I had to change Magento default products list sorting to sort by product’s date. In fact we don’t need to sort by date, just by entity_id which is product ID in Magento world. To accomplish this, we need to edit /app/code/core/Mage/Catalog/Block/Product/List.php

You have to find _beforeToHtml() function and change some things inside. First we need to define all available sorting options:

$orders = array('entity_id' => $this->__('Newest'), 'name' => $this->__('Name'), 'price' => $this->__('Price') );

then remove all getters of default sorting and order, and put those:


so finally your _beforeToHtml() should looks like this one:

protected function _beforeToHtml()

    $toolbar = $this->getToolbarBlock();

    // called prepare sortable parameters
    $collection = $this->_getProductCollection();

    // use sortable parameters
    $orders = array('entity_id' => $this->__('Newest'), 'name' => $this->__('Name'), 'price' => $this->__('Price') );



    if ($modes = $this->getModes()) {

    // set collection to tollbar and apply sort

    $this->setChild('toolbar', $toolbar);
    Mage::dispatchEvent('catalog_block_product_list_collection', array(

    return parent::_beforeToHtml();


9 thoughts on “How to sort Magento products by date added as default

  1. can i provide date option in front end to user to sort the products by date in both asc and desc order.

  2. to add DATE sort option at front end , use following file / code ( I strongly recommend to use LOCAL folder for these changes

    // app/code/core/Mage/Catalog/Model/Config.php

    public function getAttributeUsedForSortByArray()
    $options = array(
    ‘position’ => Mage::helper(‘catalog’)->__(‘Position’),

    ‘created_at’ => Mage::helper(‘catalog’)->__(‘Date’)
    foreach ($this->getAttributesUsedForSortBy() as $attribute) {
    /* @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */
    $options[$attribute->getAttributeCode()] = $attribute->getStoreLabel();

    return $options;

    and to set DATE as default sorting option, add some sorting code at the end of its _getProductCollection() method:

    // sort by created_at date or entity_id
    if(!isset($_GET[‘order’])) {
    $this->_productCollection->getSelect()->reset( Zend_Db_Select::ORDER );
    $this->_productCollection->getSelect()->order(‘e.entity_id desc’);
    return $this->_productCollection;
    You can use either ‘e.entity_id desc’ or ‘e.created_at desc’ to sort.

  3. Hi,

    i am very impressed to follow your blog but i want to know that how can we know that Product sorting is working properly .if possible to reply me

Leave a Reply