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.

Foi útil?

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
scroll top