سؤال

I used following code:

$productCollection = Mage::getResourceModel('catalog/product_type_configurable_product_collection')
        ->setFlag('require_stock_items', true)
        ->setFlag('product_children', true);

But how can only select simple products that belongs to an enabled configurable product (status = 'enabled'). Above code don't care about parent product's status. I need most efficient way to do it as I have thousands of products in my store.

هل كانت مفيدة؟

المحلول

Please using the follow code:

$configurable= Mage::getModel('catalog/product_type_configurable')->collection();
$simpleCollection = $configurable->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions();

This will give you all simple product array belong to configurable product. For enable make sure to

addAttributeToSelect

enalble product or status having yes. Hope this will help you.

نصائح أخرى

if($_product->getTypeId() == "configurable"):
    $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
    $simple_collection = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions();
    foreach($simple_collection as $simple_product){
        echo $simple_product->getSku() . " - " . $simple_product->getName() . " - " . Mage::helper('core')->currency($simple_product->getPrice()) . "<br>";
    }
endif;

second code Use with set product filter

$productCollection = Mage::getResourceModel('catalog/product_type_configurable_product_collection')
            ->setFlag('require_stock_items', true)
            ->setFlag('product_children', true)     
            ->setProductFilter($this->getProduct($_product))      
            ->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top