2017-09-29 2 views
0

J'utilise ci-dessous morceau de codeobtenir uniquement des produits simples disponibles de produits configurables

$configurable= Mage::getModel('catalog/product_type_configurable')->setProduct($_product); 
       $simpleCollection = $configurable->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions(); 
       $productAttributeOptions = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product); 
       $attributeOptions = array(); 
       foreach ($productAttributeOptions as $productAttribute) { 

         foreach ($productAttribute['values'] as $attribute) { 
          $attributeOptions[$productAttribute['label']][] = 
          array('id' => $attribute['value_index'], 
           'label' => $attribute['label'], 
           'mainId' => $productAttribute['attribute_id']); 
         } 

        } 


      return $attributeOptions; 

mais il me donne la liste de tous les produits simples, même ceux qui ne sont pas disponibles en stock. Je veux juste la liste des produits simples d'un produit configurable ceux qui sont en stock. Comment puis-je obtenir que dans des produits en stock d'un produit configurable

+0

Que diriez-vous à l'aide d'une instruction WHERE pour sélectionner les produits pour lesquels ils sont en stock? – Sheldon

Répondre

0

Vous pouvez vérifier l'état des stocks de produits 0 - pas en stock ou 1 - en stock

$configurable= Mage::getModel('catalog/product_type_configurable')->setProduct($_product); 
$simpleCollection = $configurable->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions(); 
/* -------- Add this ------- */ 
$simpleCollection->getSelect()->join('cataloginventory_stock_status', 'cataloginventory_stock_status.product_id = e.entity_id', array('stock_status')); 
$simpleCollection->getSelect()->where("`cataloginventory_stock_status`.`stock_status` = 1"); 

$productAttributeOptions = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product); 
$attributeOptions = array(); 
foreach ($productAttributeOptions as $productAttribute) { 

     foreach ($productAttribute['values'] as $attribute) { 
      $attributeOptions[$productAttribute['label']][] = 
      array('id' => $attribute['value_index'], 
       'label' => $attribute['label'], 
       'mainId' => $productAttribute['attribute_id']); 
     } 

    } 


return $attributeOptions; 
+0

mais il me donne toujours toutes les options @vky –

+0

Mon ami vérifier votre question 'obtenir seulement des produits simples disponibles de produit configurable' donc j'ai donné une solution pour cela. – Vky

+0

j'ai modifié le code et l'utiliser en conséquence pour que cela fonctionne, merci –