Magento: add new attribute to all products

2020-02-10 10:22发布

I want to add a new attribute to all products. I have done it with a install script trough

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

$this->addAttribute('catalog_product','test2',array(
    'label'     => 'test2',
    'type'      => 'varchar',
    'visible'   => true,
    'required'  => false,
    'required'  => 0
));

But how can I add values to this attribute by

$entityTypeId     = $installer->getEntityTypeId('catalog_product');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttributeGroup($entityTypeId, 'Default', 'test2', 0);
$installer->endSetup();

3条回答
Summer. ? 凉城
2楼-- · 2020-02-10 10:47

This is one of the sample code which I had used to create my own custom Product Attribute:-

$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */

$installer->startSetup();

$attrCode = 'test2';
$attrGroupName = 'Test Group';
$attrLabel = 'Test 2';
$attrNote = 'Test Note';

$objCatalogEavSetup = Mage::getResourceModel('catalog/eav_mysql4_setup', 'core_setup');
$attrIdTest = $objCatalogEavSetup->getAttributeId(Mage_Catalog_Model_Product::ENTITY, $attrCode);

if ($attrIdTest === false) {
    $objCatalogEavSetup->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attrCode, array(
        'group' => $attrGroupName,
        'sort_order' => 7,
        'type' => 'varchar',
        'backend' => '',
        'frontend' => '',
        'label' => $attrLabel,
        'note' => $attrNote,
        'input' => 'text',
        'class' => '',
        'source' => '',
        'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible' => true,
        'required' => false,
        'user_defined' => true,
        'default' => '0',
        'visible_on_front' => false,
        'unique' => false,
        'is_configurable' => false,
        'used_for_promo_rules' => true
    ));
}

$installer->endSetup();

This is used with the references of these two articles:-

Also, you will find that I have used the array key "group" to mention the Attribute Group Name, where this new custom Attribute will reside. The irony is that mentioning of this key, in the above code sample, automatically creates this Attribute in every Attribute Set found in this Magento.

So you do not need to call any method (like "addAttributeToSet()") to add this Attribute to all Attribute Sets.

Hope it helps.

查看更多
放我归山
3楼-- · 2020-02-10 10:48

Run this script in your magento root directory.(Change Configuration you need)

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();                   

$installer->addAttribute('catalog_product', 'snum', array(
             'label'             => 'Serial No',
             'type'              => 'int',
             'input'             => 'text',
             'backend'           => '',
             'frontend'          => '',
             'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
             'visible'           => true,
             'required'          => false,
             'user_defined'      => false,
             'searchable'        => false,
             'filterable'        => false,
             'comparable'        => false,
             'visible_on_front'  => true,
             'visible_in_advanced_search' => false,
             'unique'            => false
));

$installer->endSetup();

?>

For Remove Product Attribute

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
 $installer = new Mage_Sales_Model_Mysql4_Setup;
 $installer->startSetup();
 $installer->removeAttribute('catalog_product', 'snum');
 $installer->endSetup();

?>
查看更多
放荡不羁爱自由
4楼-- · 2020-02-10 10:58

you can add custom attribute to the magento backend as shown.If you create the product attribute as module it is easy to move from one database to another.

?php
$this->startSetup();
$this->addAttribute(catalog_product, 'featured_product', array(
'group'         => 'General',
'input'         => 'select',
'type'          => 'text',
'label'         => 'Featured Product',
'backend'       => '',
'visible'       => true,
'required'      => false,
'visible_on_front' => true,
'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'source' => 'eav/entity_attribute_source_boolean',
'sort_order'        => 8,
));

$this->endSetup();

please refer my tutorial for step by step explanation and file structure. http://www.pearlbells.co.uk/adding-custom-product-attributes-in-magento/

查看更多
登录 后发表回答