我想为所有产品添加一个新属性。我已经通过安装脚本完成了
$installer = $this;
$installer->startSetup();
$this->addAttribute('catalog_product','test2',array(
'label' => 'test2',
'type' => 'varchar',
'visible' => true,
'required' => false,
'required' => 0
));
但是我怎样才能给这个属性添加值呢
$entityTypeId = $installer->getEntityTypeId('catalog_product');
$attributeSetId = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttributeGroup($entityTypeId, 'Default', 'test2', 0);
$installer->endSetup();
最佳答案
这是我用来创建自己的自定义产品属性的示例代码之一:-
$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();
这与这两篇文章的引用一起使用:-
- Magento Wiki: Installing Custom Attributes with Your Module
- Mukesh Chapagain Blog: Magento Adding attribute from MySQL setup file
另外,您会发现我使用了数组键“group
”来提及属性组名称,这个新的自定义属性将驻留在其中。具有讽刺意味的是,在上面的代码示例中提到这个键,会自动在这个 Magento 中找到的每个属性集中创建这个属性。
因此您无需调用任何方法(如“addAttributeToSet()
”)即可将此属性添加到所有属性集中。
希望对您有所帮助。
关于Magento:为所有产品添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599262/