Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking if a Magento product is a child of a configurable product

Tags:

php

magento

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.

like image 985
chris.rickard Avatar asked Nov 10 '09 07:11

chris.rickard


People also ask

What is the difference between simple product and configurable product in Magento?

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.


2 Answers

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(); } 
like image 143
michaelk Avatar answered Oct 16 '22 06:10

michaelk


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()); } 
like image 45
deepmark Avatar answered Oct 16 '22 05:10

deepmark