Obtenha apenas produtos em estoque na página de visualização
-
13-12-2019 - |
Pergunta
Eu uso o código abaixo, que funciona bem, consigo mostrar aleatoriamente 5 produtos da mesma categoria na minha página de visualização.
Gostaria de mostrar apenas produtos que estão em estoque.Agora ele está mostrando produtos fora de estoque e em estoque.
<?php $categories = $_product->getCategoryIds();?>
<?php $result = array();
foreach($categories as $cat_id) {
$category = Mage::getModel('catalog/category');
$category->load($cat_id);
$collection = $category->getProductCollection();
foreach ($collection as $product) {
$result[] = $product->getId();
}
}
?>
<?php if(sizeof($result) >= 5)
{
$ourneed = array_rand($result,5);
foreach($ourneed as $cc)
{
$thisproduct= Mage::getModel('catalog/product')->load($result[$cc]);
?>
Solução
Adicione filtro de estoque à sua coleção.
O código a seguir foi testado localmente e parece funcionar bem:
$category = Mage::getModel('catalog/category');
$category->load(250);
$collection = $category->getProductCollection();
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);
Traduzir isso para o seu código, que não testei, fornece:
<?php
$categories = $_product->getCategoryIds();
$result = array();
foreach($categories as $cat_id) {
$category = Mage::getModel('catalog/category');
$category->load($cat_id);
$collection = $category->getProductCollection();
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);
foreach ($collection as $product) {
$result[] = $product->getId();
}
}
if(sizeof($result) >= 5) {
$ourneed = array_rand($result,5);
foreach($ourneed as $cc){
$thisproduct= Mage::getModel('catalog/product')->load($result[$cc]);
// Provided Code Sample Appears Incomplete
}
}
?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange