We need to use a install script for that and our script should extend the functionality of Mage_Catalog_Model_Resource_Setup class. And we do this in our NameSpace_ModuleName/etc/config.xml, under <global> tag --
<resources>
<practice_training_setup> <!-- here name space is Practice and module name is training, you can have your own -->
<setup>
<module>Practice_Training</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
</practice_training_setup>
</resources>
Here’s the code which will create a new product attribute and assign that attribute to our custom new attribute group --
<?php
/** @var $installer Mage_Catalog_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$productTypes = array(
Mage_Catalog_Model_Product_Type::TYPE_SIMPLE,
Mage_Catalog_Model_Product_Type::TYPE_BUNDLE,
Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE,
Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
);
$productTypes = join(',', $productTypes);
/**
* Add attributes to the eav/attribute table
*/
$installer->addAttribute(
Mage_Catalog_Model_Product::ENTITY,
'my_attribute_code',
array(
'type' => 'text',
'backend' => '',
'frontend' => '',
'label' => 'My Attribute Label',
'input' => 'text',
'class' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
'visible' => true,
'required' => true,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'unique' => false,
'apply_to' => $productTypes,
'is_configurable' => false,
'used_in_product_listing' => false
)
);
$getDefaultSetId = $installer->getAttributeSetId('catalog_product', 'default');
$installer->addAttributeGroup(
'catalog_product',
$defaultSetId,
'My New Group'
);
//get the id of our new attribute group
$getGroupId = $installer->getAttributeGroup(
'catalog_product',
$defaultSetId,
'My New Group',
'attribute_group_id'
);
/*
$getAttributeId = Mage::getSingleton('eav/config')->getAttribute('catalog_product', 'my_attribute_code')->getId();
*/
$getAttributeId = $installer->getAttributeId(
'catalog_product',
'my_attribute_code'
);
//assign the attribtue to default attribute set and to our new attribute group
if ($attributeId > 0) {
$installer->addAttributeToSet(
'catalog_product',
$getDefaultSetId,
$getGroupId,
$getAttributeId
);
}
$installer->endSetup();
Cheers!