Magento Development Services

Online Magento stores require a number of features to provide their customers with a convenient shopping experience. For example, With Magento web development, you can add a configurable product type where you can offer an item with some options that can be configured by customers themselves. Like selling the same shoes or garments in different colours or sizes and allowing the customer to select for themselves.

Magento, by default offers a simple choice for configuring this – a single product with no configurable attributes that can be changed by the end user.

Programmatically, you can create a code that will allow you to create a configurable product . In general the code here will create number of simple products with specific attribute values that will ultimately bind to one configurable product that will be visible to customer on frontend.

 1,
                             'is_in_stock' => 1,
                             'qty' => 10,
                             'use_config_manage_stock' => 0
                 );
    $simplePro[0]['category_ids'] = array(8,13);
    $simplePro[1]['size'] = 'S';
    $simplePro[1]['name'] = 'Medium size tshirt';
    $simplePro[1]['sku'] = 'medium_tshirt_1';
    $simplePro[1]['weight'] = 1;
    $simplePro[1]['attribute_set_id'] = 41;
    $simplePro[1]['description'] = 'Product description';
    $simplePro[1]['short_description'] = 'Product short description';
    $simplePro[1]['type_id'] = Mage_Catalog_Model_Product_Type::TYPE_SIMPLE;
    $simplePro[1]['status'] = Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
    $simplePro[1]['visibility'] = Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE;
    $simplePro[1]['tax_class_id'] = 0;
    $simplePro[1]['price'] = 150;
    $simplePro[1]['stock_data'] = array(
                            'manage_stock' => 1,
                            'is_in_stock' => 1,
                            'qty' => 11,
                            'use_config_manage_stock' => 0
                );
    $simplePro[1]['category_ids'] = array(8,13);
    $simplePro[1]['size'] = 'M';
 
?>
getIdByCode('catalog_product', $attribute_code);
		$attribute = $attribute_model->load($attribute_code);
		$attribute_table = $attribute_options_model->setAttribute($attribute);
		$options = $attribute_options_model->getAllOptions(false);
         foreach($options as $option) 
         {
			if ($option['label'] == $label)
			{
				$optionId=$option['value'];
				break;
			}
         }
         return $optionId;
    }
?>
setName($product['name']);
        $simpleProductObj->setSku($product['sku']);
        $simpleProductObj->setWeight($product['weight']);
        $simpleProductObj->setAttributeSetId($product['attribute_set_id']);
        $simpleProductObj->setDescription($product['description']);
        $simpleProductObj->setShortDescription($product['short_description']);
        $simpleProductObj->setTypeId($product['type_id'])
                 ->setWebsiteIds(array(1))
                 ->setStatus($product['status'])
                 ->setVisibility($product['visibility'])
                 ->setTaxClassId($product['tax_class_id']);
        $simpleProductObj->setPrice($product['price']);
        $simpleProductObj->setStockData($product['stock_data']);
        $simpleProductObj->setCategoryIds($product['category_ids']);
        $optionId = getOptionId('size',$product['size']);
        $simpleProductObj->setData('size',$optionId);
        $simpleProductObj->save();
 
		
        array_push(
                $simpleProducts,
                array(
                    "id" => $simpleProductObj->getId(),
                    "price" => $simpleProductObj->getPrice(),
                    "attr_code" => 'size',
                    "attr_id" => 129, // This is hardcoded attribute id of attribute 'size', Please change according to your store
                    "value" => $optionId,
                    "label" => $product['size'],
                )
            );
    }
?>
 'Main configurable Tshirt',
                       'sku' > 'tshirt_configurable_1',
                       'description' => 'configurable product description',
                       'short_description' => 'configurable product short description',
                       'weight' => 1,
                       'status' => '1',
                       'visibility' => '4',
                       'attribute_set_id' => 41,
                       'type_id' => 'configurable',
                       'price' => 150,
                       'tax_class_id' => 0,
                       'page_layout' => 'one_column',
                );
    foreach($productData as $key => $value)
    {
    	$cProduct->setData($key,$value);
    }
    $cProduct->setWebsiteIds(array(1));
    $cProduct->setStockData(array(
    		'manage_stock' => 1,
                'is_in_stock' => 1,
                'qty' => 0,
                'use_config_manage_stock' => 0
        ));
    $cProduct->setCategoryIds(array(8,13));
	$cProduct->setCanSaveConfigurableAttributes(true);
    $cProduct->setCanSaveCustomOptions(true);
 
        $attribute_ids = array(525);
        $cProductTypeInstance = $cProduct->getTypeInstance();
        $cProductTypeInstance->setUsedProductAttributeIds($attribute_ids);
        $attributes_array = $cProductTypeInstance->getConfigurableAttributesAsArray();
        foreach($attributes_array as $key => $attribute_array) 
        {
            $attributes_array[$key]['use_default'] = 1;
            $attributes_array[$key]['position'] = 0;
 
            if (isset($attribute_array['frontend_label']))
            {
                $attributes_array[$key]['label'] = $attribute_array['frontend_label'];
            }
            else {
                $attributes_array[$key]['label'] = $attribute_array['attribute_code'];
            }
        }
        // Add it back to the configurable product..
        $cProduct->setConfigurableAttributesData($attributes_array);
 
        $dataArray = array();
        foreach ($simpleProducts as $simpleArray)
        {
            $dataArray[$simpleArray['id']] = array();
            foreach ($attributes_array as $key => $attrArray)
            {
                array_push(
                    $dataArray[$simpleArray['id']],
                    array(
                        "attribute_id" => $simpleArray['attr_id'][$key],
                        "label" => $simpleArray['label'][$key],
                        "is_percent" => 0,
                        "pricing_value" => $simpleArray['pricing_value'][$key]
                    )
                );
            }
        }
        $cProduct->setConfigurableProductsData($dataArray);
		$mode = array("small_image","thumbnail","image");
		$img = Mage::getBaseDir('media').DS.'zaffranlogo.JPG';
		$cProduct->addImageToMediaGallery($img, $mode, false, false);
	 
		$cProduct->save();
		echo "Product has been saved."; 
 
    exit();
?>

This covered one way in which you can create configurable products in Magento.

Share Button