I have the following code to grab a list of Products
$collection = Mage::getModel('catalog/product')->getCollection(); $collection->addAttributeToSelect('name') ->addAttributeToFilter("category_ids", array('finset'=>$this->category_id)); foreach($collection as $product) { echo $product->getName(); }
My question is, how can I NOT echo products that are 'simple' but belong to a parent 'configurable' product. (for example don't show "Red Shirt Medium" as it belongs to "Red Shirt")
I have worked out that this association lives in 'catalog_product_super_link
' but I have only just started with Magento and unfortuantely don't know how to do the filtering :)
Cheers guys,
Chris.
What's the difference between a simple product vs Configurable products in Magento 2? Simple products are products that do not require the user to choose any additional attributes to buy the product – they just add to cart. Configurable products require users to select multiple options before adding to cart.
I don't know a direct way to add this condition to the collection, I'd be interested in such a solution too. But you can always check inside the loop for each product:
if (empty(Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId()))) { echo $product->getName(); }
I've done something similar for our google feed. This excerpt of code is what I use to check the products inheritance:
$products = Mage::getModel('catalog/product')->getCollection(); $products->addAttributeToSelect('*'); $products->addAttributeToFilter('status', 1);//enabled $products->addAttributeToFilter('price', array('gt' => 0) );//price not 0 //$products->addAttributeToFilter('visibility', 4); //catalog, search - comment out to show all items (configurable products simple product breakdowns) Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); $prodIds=$products->getAllIds(); try { foreach($prodIds as $productId) { $product = Mage::getModel('catalog/product'); $product->load($productId); // SIMPLE PRODUCTS if($product->getTypeId() == 'simple' ) { $prodName = trim($product->getName()); $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($productId); if(!$parentIds) $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($productId); if($parentIds) { $parentProd = Mage::getModel('catalog/product')->load($parentIds[0]); /* * do something if this product has a parent or do some checks against $parentProd */ } // end parent check }//if SIMPLE } // foreach } catch(Exception $e) { die($e->getMessage()); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With