Add custom attribute for category

Follow bellow steps

Step : 1 app\etc\modules\AR_Dbchange.xml

<?xml version="1.0"?>
<config>
    <modules>
        <AR_Dbchange>
            <active>true</active>
            <codePool>local</codePool>
        </AR_Dbchange>
    </modules>
</config> 

Step : 2 app\code\local\AR\Dbchange\etc\config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <AR_Dbchange>
            <version>0.1.0</version>
        </AR_Dbchange>
    </modules>
    <global>
        <resources>
            <ar_dbchange_setup>
              <setup>
                   <module>AR_Dbchange</module>
                   <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
              </setup>
          </ar_dbchange_setup>
        </resources>  
    </global>
</config> 

Step : 3 app\code\local\AR\Dbchange\sql\ar_dbchange_setup\mysql4-install-0.1.0.php

<?php

$installer = $this;
$installer->startSetup();

$attribute  = array(
    'group'                     => 'General',
        'input'                     => 'select',
        'type'                      => 'int',
        'label'                     => 'Mobile (api)',
        'source'                    => 'eav/entity_attribute_source_boolean',
        'global'                    => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible'                   => 1,
        'required'                  => 0,
        'visible_on_front'          => 0,
        'is_html_allowed_on_front'  => 0,
        'is_configurable'           => 0,
        'searchable'                => 0,
        'filterable'                => 0,
        'comparable'                => 0,
        'unique'                    => false,
        'user_defined'              => false,
        'default'           => '0',
        'is_user_defined'           => false,
        'used_in_product_listing'   => true
);
$installer->addAttribute('catalog_category', 'mobile_api', $attribute);
$installer->endSetup();

?>

Step : 4 After refresh all magento cache to admin side (System -> Cache Management) and logout ,login again


you can do via custom set up script.

$installer = $this;
$installer->startSetup();

$entityTypeId     = $installer->getEntityTypeId('catalog_category');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$installer->addAttribute('catalog_category', 'new_cat_attrb',  array(
    'type'     => 'int',
    'label'    => 'New Category Attribute',
    'input'    => 'text',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0
));


$installer->addAttributeToGroup(
    $entityTypeId,
    $attributeSetId,
    $attributeGroupId,
    'new_cat_attrb',
    '11'                    //last Magento's attribute position in General tab is 10
);

$attributeId = $installer->getAttributeId($entityTypeId, 'new_cat_attrb');

$installer->run("
INSERT INTO `{$installer->getTable('catalog_category_entity_int')}`
(`entity_type_id`, `attribute_id`, `entity_id`, `value`)
    SELECT '{$entityTypeId}', '{$attributeId}', `entity_id`, '1'
        FROM `{$installer->getTable('catalog_category_entity')}`;
");


//this will set data of your custom attribute for root category
Mage::getModel('catalog/category')
    ->load(1)
    ->setImportedCatId(0)
    ->setInitialSetupFlag(true)
    ->save();

//this will set data of your custom attribute for default category
Mage::getModel('catalog/category')
    ->load(2)
    ->setImportedCatId(0)
    ->setInitialSetupFlag(true)
    ->save();

$installer->endSetup();

config.xml

<resources>
    <new_attribute_csv_setup>
      <setup>
        <module>New_Attribute</module>
        <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
      </setup>
      <connection>
        <use>core_setup</use>
      </connection>
    </new_attribute_setup>
    <new_attribute_setup_write>
      <connection>
        <use>core_write</use>
      </connection>
    </new_attribute_setup_write>
    <new_attribute_setup_read>
      <connection>
        <use>core_read</use>
      </connection>
    </new_attribute_setup_read>
</resources>

or you can also visit another solution at bellow link.

https://stackoverflow.com/questions/32733655/magento-programmatically-create-custom-product-attribute-via-set-up-script

I hope this will help you.

Tags:

Magento 1.9