Product Attribute Addition

Posted About 12 years ago. Visible to the public.

This code shows all possible configuration options for an attribute that I know of, you need not include all of these when adding an attribute (although it won't hurt)

$installer = Mage::getResourceModel('catalog/setup', 'catalog_setup');

if (!$installer->getAttributeId(Mage_Catalog_Model_Product::ENTITY, 'attribute_name')) {
    $installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'attribute_name', array(         // TABLE.COLUMN:                                       DESCRIPTION:
        'label'                      => 'Label',                                                  // eav_attribute.frontend_label                        admin input label
        'group'                      => 'General',                                                // (not a column)                                      tab in product edit screen
        'sort_order'                 => 0,                                                        // eav_entity_attribute.sort_order                     sort order in group
        'backend'                    => 'module/class_name',                                      // eav_attribute.backend_model                         backend class (module/class_name format)
        'type'                       => 'varchar',                                                // eav_attribute.backend_type                          backend storage type (varchar, text etc)
        'frontend'                   => 'module/class_name',                                      // eav_attribute.frontend_model                        admin class (module/class_name format)
        'note'                       => null,                                                     // eav_attribute.note                                  admin input note (shows below input)
        'default'                    => null,                                                     // eav_attribute.default_value                         admin input default value
        'wysiwyg_enabled'            => false,                                                    // catalog_eav_attribute.is_wysiwyg_enabled            (products only) admin input wysiwyg enabled
        'input'                      => 'input_name',                                             // eav_attribute.frontend_input                        admin input type (select, text, textarea etc)
        'input_renderer'             => 'module/class_name',                                      // catalog_eav_attribute.frontend_input_renderer       (products only) admin input renderer (otherwise input is used to resolve renderer)
        'source'                     => null,                                                     // eav_attribute.source_model                          admin input source model (for selects) (module/class_name format)
        'required'                   => true,                                                     // eav_attribute.is_required                           required in admin
        'user_defined'               => false,                                                    // eav_attribute.is_user_defined                       editable in admin attributes section, false for not
        'unique'                     => false,                                                    // eav_attribute.is_unique                             unique value required
        'global'                     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,  // catalog_eav_attribute.is_global                     (products only) scope
        'visible'                    => true,                                                     // catalog_eav_attribute.is_visible                    (products only) visible on admin, setting to false stops import of this attribute
        'visible_on_front'           => false,                                                    // catalog_eav_attribute.is_visible_on_front           (products only) visible on frontend (store) attribute table
        'used_in_product_listing'    => false,                                                    // catalog_eav_attribute.used_in_product_listing       (products only) made available in product listing
        'searchable'                 => false,                                                    // catalog_eav_attribute.is_searchable                 (products only) searchable via basic search
        'visible_in_advanced_search' => false,                                                    // catalog_eav_attribute.is_visible_in_advanced_search (products only) searchable via advanced search
        'filterable'                 => false,                                                    // catalog_eav_attribute.is_filterable                 (products only) use in layered nav
        'filterable_in_search'       => false,                                                    // catalog_eav_attribute.is_filterable_in_search       (products only) use in search results layered nav
        'comparable'                 => false,                                                    // catalog_eav_attribute.is_comparable                 (products only) comparable on frontend
        'is_html_allowed_on_front'   => true,                                                     // catalog_eav_attribute.is_visible_on_front           (products only) seems obvious, but also see visible
        'apply_to'                   => 'simple,configurable',                                    // catalog_eav_attribute.apply_to                      (products only) which product types to apply to
        'is_configurable'            => false,                                                    // catalog_eav_attribute.is_configurable               (products only) used for configurable products or not
        'used_for_sort_by'           => false,                                                    // catalog_eav_attribute.used_for_sort_by              (products only) available in the 'sort by' menu
        'position'                   => 0,                                                        // catalog_eav_attribute.position                      (products only) position in layered naviagtion
        'used_for_promo_rules'       => false,                                                    // catalog_eav_attribute.is_used_for_promo_rules       (products only) available for use in promo rules
    ));
}

Mike Whitby
Last edit
Over 10 years ago
Posted by Mike Whitby to Magento (2012-03-01 11:30)