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]); 
    ?> 
Foi útil?

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