Sort by price not working in Magento Product List

I am unable to sort product by price in product list page.

Sort by name works fine there.

Any idea guys?

I googled and tried some solution but they didn’t solve my problem.

I tried: System->Cache Management->Layered Navigation Indices->Refresh now

Also tried this link: http://www.miromedia.co.uk/blog/300/fixing-the-magento-price-sort-issue.htm

Magento version: 1.3.2.4

2 thoughts on “Sort by price not working in Magento Product List”

  1. There seems to be some kind of bug in this version of Magento, the product catalog index price not updating on product save. So what you can do is by pass the price condition like described below.

    Update addAttributeToSort function of Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection class.

    Comment out the following code:-

    //        if ($attribute == 'price' && $storeId != 0) {
    //            $websiteId = Mage::app()->getStore()->getWebsiteId();
    //            $customerGroup = Mage::getSingleton('customer/session')->getCustomerGroupId();
    //
    //            if ($this->isEnabledFlat()) {
    //                $priceColumn = 'e.display_price_group_' . $customerGroup;
    //                $this->getSelect()->order("{$priceColumn} {$dir}");
    //            }
    //            else {
    //                $priceAttributeId = $this->getAttribute('price')->getId();
    //
    //                $entityCondition = '_price_order_table.entity_id = e.entity_id';
    //                $storeCondition = $this->getConnection()->quoteInto(
    //                    '_price_order_table.website_id = ?',
    //                    $websiteId
    //                );
    //                $groupCondition = $this->getConnection()->quoteInto(
    //                    '_price_order_table.customer_group_id = ?',
    //                    $customerGroup
    //                );
    //                $attributeCondition = $this->getConnection()->quoteInto(
    //                    '_price_order_table.attribute_id = ?',
    //                    $priceAttributeId
    //                );
    //
    //                $this->getSelect()->joinLeft(
    //                    array('_price_order_table'=>$this->getTable('catalogindex/price')),
    //                    "{$entityCondition} AND {$storeCondition} AND {$groupCondition} AND {$attributeCondition}",
    //                    array()
    //                );
    //                $this->getSelect()->order('_price_order_table.value ' . $dir);
    //
    //                /**
    //                 * Distinct we are using for remove duplicates of products which have
    //                 * several rows in price index (like grouped products)
    //                 */
    //                $this->getSelect()->distinct(true);
    //            }
    //
    //            return $this;
    //        }
    

    You can do this in Magento standard way other than commenting out the core code. Hope this helps.

  2. You need to configure the price attribute correctly in Magento admin.

    Go to attribute management, find the price attribute and ensure that you tick the box on “sortable in frontend”

    that should resolve this for you.

Leave a Reply

Your email address will not be published. Required fields are marked *