Monday, December 26, 2011

Creating a new attribute and adding to attribute set with groups in magento programmatically

Hi,

We can create new attribute and adding to attribute set with particular groups in magento programmatically




$attribute_set_name="Default";  //attribute set name
 $group_name="New Attribute";  //  Inside attribue set you will get groups  ex:- General, prices etc
  //My "simple product only" attribute
createAttribute(strtolower(str_replace(" ", "_", 'Cable Functionality')), "Cable Functionality", "select", "simple",$attribute_set_name,$group_name);

function createAttribute($code, $label, $attribute_type, $product_type, $attribute_set_name, $group_name )
{
    $_attribute_data = array(
        'attribute_code' => $code,
        'is_global' => '1',
        'frontend_input' => $attribute_type, //'boolean',
        'default_value_text' => '',
        'default_value_yesno' => '0',
        'default_value_date' => '',
        'default_value_textarea' => '',
        'is_unique' => '0',
        'is_required' => '0',
        'apply_to' => array($product_type), //array('grouped')
        'is_configurable' => '0',
        'is_searchable' => '0',
        'is_visible_in_advanced_search' => '0',
        'is_comparable' => '0',
        'is_used_for_price_rules' => '0',
        'is_wysiwyg_enabled' => '0',
        'is_html_allowed_on_front' => '1',
        'is_visible_on_front' => '0',
        'used_in_product_listing' => '0',
        'used_for_sort_by' => '0',
        'frontend_label' => array($label)
    );
 
    $model = Mage::getModel('catalog/resource_eav_attribute');
 
    if (!isset($_attribute_data['is_configurable'])) {
        $_attribute_data['is_configurable'] = 0;
    }
    if (!isset($_attribute_data['is_filterable'])) {
        $_attribute_data['is_filterable'] = 0;
    }
    if (!isset($_attribute_data['is_filterable_in_search'])) {
        $_attribute_data['is_filterable_in_search'] = 0;
    }
 
    if (is_null($model->getIsUserDefined()) || $model->getIsUserDefined() != 0) {
        $_attribute_data['backend_type'] = $model->getBackendTypeByInput($_attribute_data['frontend_input']);
    }
 
    $defaultValueField = $model->getDefaultValueByInput($_attribute_data['frontend_input']);
    if ($defaultValueField) {
      //  $_attribute_data['default_value'] = $this->getRequest()->getParam($defaultValueField);
    }
 
    $model->addData($_attribute_data);
 
    $model->setEntityTypeId(Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId());
    $model->setIsUserDefined(1);
    try {
        $model->save();
  $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
   //-------------- add attribute to set and group

   $attribute_code = $code;

            $attribute_set_id=$setup->getAttributeSetId('catalog_product', $attribute_set_name);
            $attribute_group_id=$setup->getAttributeGroupId('catalog_product', $attribute_set_id, $group_name);
            $attribute_id=$setup->getAttributeId('catalog_product', $attribute_code);

            $setup->addAttributeToSet($entityTypeId='catalog_product',$attribute_set_id, $attribute_group_id, $attribute_id);
  
    } catch (Exception $e) { echo '<p>Sorry, error occured while trying to save the attribute. Error: '.$e->getMessage().'</p>'; }
}

No comments:

Post a Comment