2017-09-29 201 views
0

的只提供简单的产品,我用下面的代码获得配置产品

$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; 

,但它给了我一切简单的产品名单,甚至那些没有现货。 我只想要一个可配置产品的简单产品列表。 我怎样才能只股票产品配置产品的

+0

如何使用WHERE语句来选择产品,他们有库存吗? – Sheldon

回答

0

您可以检查产品库存状态0 - 没有库存或1 - 股票

$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

但它仍然给我所有选项@vky –

+0

我的朋友检查你的问题'只得到可配置产品的简单产品',所以我给了一个解决方案。 – Vky

+0

我修改了代码,并相应地使用它,所以它的工作,谢谢 –