如何在 magento 中根据库存状态对产品集合进行排序

How to sort product collection on stock status in magento

我想对分类页面的产品集合进行排序,使有货产品出现在缺货产品之前。所有缺货产品将在有货产品之后显示。我已经重写了 Mage_Product_Block_List 块。

You can use catalog_product_collection_load_before event.   
And in the observer:

public function modifyProductCollection(Varien_Event_Observer $observer) {
    //catalog_product_collection_load_before
    $collection = $observer->getCollection();

    $collection->getSelect()->joinLeft(
                array('_inventory_table' => $collection->getTable('cataloginventory/stock_item')),
                "_inventory_table.product_id = e.entity_id",
                array('is_in_stock')
            )
            ->order('is_in_stock DESC')
            ->order('created_at DESC');
}