2017-09-29 204 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

我修改了代碼,並相應地使用它,所以它的工作,謝謝 –