2013-02-11 4 views
0

Я хочу, чтобы добавить новый атрибут продукта и я использую код, подобный этому:Magento - добавить новый атрибут catalog_product

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

$attribute = array(
    'label'    => 'New Attribute', 
    'required'   => false, 
    'type'    => 'varchar', 
    'input'    => 'text' 
); 
$installer->addAttribute('catalog_product', 'new_attribute', $attribute); 

Который работает отлично.

Но я хочу добавить этот атрибут к определенному набору атрибутов и ТОЛЬКО к этому конкретному набору атрибутов.

Как это можно достичь?

ответ

1

Предполагая, что вы знаете, что $attributeSetId, процедура выглядит следующим образом:

  1. Получите $ attributeId
  2. Получить Группа атрибутов Id атрибута устанавливается (например, группа "General")
  3. Добавьте атрибут к набору и группы

Например

 $attributeId = $installer->getAttributeId(
      'catalog_product', 
      'new_attribute' 
     ); 

     $attributeGroupId = $installer->getAttributeGroup(
      'catalog_product', 
      $attributeSetId, 
      'General' 
     ); 

     $installer->addAttributeToSet(
      'catalog_product', 
      $attributeSetId, 
      $attributeGroupId, 
      $attributeId 
     ); 
+0

В этом случае нет способа сделать это с некоторыми значениями конфигурации, переданными вызову метода addAttribute? –

+0

Не для конкретного, нет. Если вы укажете идентификатор группы в массиве данных атрибутов или оставьте свойство 'user_defined' пустым, то атрибут будет автоматически добавлен к каждому набору, принадлежащему его типу объекта. См. Здесь https://github.com/varinen/solvingmagento_1.7.0/blob/master/app/code/core/Mage/Eav/Model/Entity/Setup.php#L669 –

Смежные вопросы