Obtenha apenas produtos que estão em estoque
-
13-12-2019 - |
Pergunta
Alterei a opção no Magento para mostrar apenas os produtos que estão em estoque.Configuração -> Catálogo -> Inventário.EXIBIR PRODUTOS FORA DE ESTOQUE está definido como "NÃO"
Na minha página inicial/índice eu uso o código abaixo para exibir aleatoriamente 5 produtos da mesma categoria.
<?php
$products = Mage::getModel('catalog/product')->getCollection();
$products->joinField(
'qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
);
$products->addAttributeToSelect(array('name', 'thumbnail', 'price', 'special_price' , 'RegularPrice' ));
$products->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id', null, 'left' );
$products->getSelect()->limit(5);
$products->getSelect()->order('RAND()');
$products->addAttributeToFilter('category_id', array('in' => array(5)));
$this->_reviewsHelperBlock = $this->getLayout()->createBlock('review/helper');
foreach ($products as $product) :
?>
O código acima exibe produtos que estão em estoque e produtos que estão fora de estoque.
O que eu gostaria de realizar é exibir produtos que estão apenas em estoque.Tentei fazer isso de muitas maneiras diferentes, mas não consegui.
Solução
As informações de estoque são gerenciadas pelo módulo Cataloginventory, tente adicionar o seguinte código em sua coleção de produtos
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
cumprimentos
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange