How to list products in descending order?

You cannot change the default order direction for product lists from configuration.

You can however change the direction from layout XML.

Here are a few examples that you can put in your layout XML file, e.g. local.xml:

<?xml version="1.0"?>
<layout version="0.1.0">
    <!-- Change default direction for simple searches -->
    <catalogsearch_result_index>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_result_index>

    <!-- Change default direction for advanced searches -->
    <catalogsearch_advanced_result>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_advanced_result>

    <!-- Change default direction for a category without layered navigation -->
    <catalog_category_default>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_default>

    <!-- Change default direction for a category with layered navigation -->
    <catalog_category_layered>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_layered>

    <!-- Change default direction for category with ID 3 -->
    <CATEGORY_3>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>                                   
        </reference>
    </CATEGORY_3>
</layout>

Furthermore you can add layout XML as a Custom Design of your category in the backend. This setting will overwrite what you set in the XML file:

Set the default order direction by using Custom Design XML


Question is tagged CE 1.7.0.2 but this solution is useful for those on 1.9.1.1 so I'm adding it here.

We had an opposite problem where we needed to show the cheapest products first when sorted by Price. For the OP's first concern, this doesn't apply because in Magento CE 1.9 it already defaults to descending so this is actually not needed. The second concern, for a way to choose ascending vs descending, it can be done through an XML file or the Custom Layout Update. The latter is the preferred solution in most cases and most people would avoid the hassle of FTP'ing to upload an XML file to update settings.

Here's how it looks like in Catalog > Manage Categories > Category > Custom Design > Custom Layout Update:

Shows cheapest products first, NOT most expensive Here's the code:

<reference name="product_list_toolbar">
    <action method="setDefaultDirection"><string>asc</string></action>
    <action method="setDefaultOrder"><string>price</string></action>
</reference>

To choose ascending vs descending, just change asc to desc.

As an option, you can also change price to the sorting that you need. You can remove it so that it will default to asc on any Product Listing Sort by option that is set up as default.


The solutions above did not seem to make a difference with CE 1.8, so I had to solve this issue by overriding catalog model functionality in code/local/.../Catalog/Model/Category.php

/**
 * Override category products collection
 * to sort by price descending
 *
 * @return Varien_Data_Collection_Db
 */
public function getProductCollection()
{  
    $collection = parent::getProductCollection()->setOrder('price', 'DESC');
    return $collection;
}

Hope this helps. :-)