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:

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

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

 

9 comments

  1. 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’),

    // HERE IS OUR NEW OPTION
    ‘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.

  2. 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