I want to move **out of stock product** in last of the category listing, itried below code but same seems not working. **app/code/Meetanshi/StockQuantity/etc/module.xml** <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Meetanshi_StockQuantity" setup_version="1.0.0"/> </config> **app/code/Meetanshi/StockQuantity/etc/events.xml** <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="catalog_block_product_list_collection"> <observer name="stockLast" instance="Meetanshi\StockQuantity\Observer\StockLast" /> </event> </config> **app/code/Meetanshi/StockQuantity/Observer/StockLast.php** <?php namespace Meetanshi\StockQuantity\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Store\Model\StoreManagerInterface; use Magento\Framework\Event\Observer; use Magento\Catalog\Block\Product\ProductList\Toolbar as CoreToolbar; class StockLast implements ObserverInterface { protected $scopeConfig; protected $_storeManager; protected $coreToolbar; public function __construct( ScopeConfigInterface $scopeConfig, StoreManagerInterface $storeManager, CoreToolbar $toolbar ) { $this->scopeConfig = $scopeConfig; $this->_storeManager = $storeManager; $this->coreToolbar = $toolbar; } public function execute(Observer $observer) { $collection = $observer->getEvent()->getData('collection'); try { $websiteId = 0; $stockId = 'stock_id'; $collection->getSelect()->joinLeft( array('_inv' => $collection->getResource()->getTable('cataloginventory_stock_status')), "_inv.product_id = e.entity_id and _inv.website_id=$websiteId", array('stock_status') ); $collection->addExpressionAttributeToSelect('in_stock', 'IFNULL(_inv.stock_status,0)', array()); $collection->getSelect()->reset('order'); $collection->getSelect()->order('in_stock DESC'); //code for Filter Price Low to High or High to Low with stock filter. if ($this->coreToolbar->getCurrentOrder() == 'price') { $direction = $this->coreToolbar->getCurrentDirection(); $collection->getSelect()->order("min_price $direction"); } } catch (\Exception $e) { } return $this; } }