/** * Add only is in stock products filter to product collection * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @return void */ public function addIsInStockFilterToCollection($collection) { $stockFlag = 'has_stock_status_filter'; if (!$collection->hasFlag($stockFlag)) { $isShowOutOfStock = $this->scopeConfig->getValue(\Magento\CatalogInventory\Model\Configuration::XML_PATH_SHOW_OUT_OF_STOCK, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); $resource = $this->getStockStatusResource(); $resource->addStockDataToCollection($collection, !$isShowOutOfStock); $collection->setFlag($stockFlag, true); } }