私はどこでも答えを探しましたが、Magento を混乱させましたが、有効な解決策が見つかりません。私はmagento属性を動的に作成していますが、それは問題ありませんが、それに関しては
- 値の設定
- デフォルト値の設定
- オプションを追加する
- 属性を検索可能にする
何も機能していないようです。
これが属性を追加するための私のコードです
$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->addAttribute('catalog_product', $name, array(
'type' => 'varchar',
'input' => 'select',
'backend' => '',
'frontend' => '',
'label' => $key,
'class' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => true,
'filterable' => true,
'comparable' => true,
'visible' => true,
'visible_on_front' => true,
'visible_in_advanced_search' => true,
'unique' => false,
'apply_to' => '',
'is_configurable' => false,
'option' => array(
'values' => array($specific)
)
));
$installer->endSetup();
$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key))->save();
それは問題なく追加され、オプションも追加されますが、そのオプションをデフォルトとして設定できず(後で追加するため)、検索可能にできません。
誰かが助けてくれることを本当に願っています。
ありがとう
アップデート:
このコードを使用して、デフォルト(まだ検索できないなど)を追加することができました。
$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->startSetup();
$installer->addAttribute('catalog_product', $name, array(
'type' => 'int',
'input' => 'select',
'backend' => '',
'frontend' => '',
'label' => $key,
'class' => '',
'source' => 'eav/entity_attribute_source_table',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => true,
'filterable' => true,
'comparable' => true,
'visible' => true,
'visible_on_front' => true,
'visible_in_advanced_search' => true,
'unique' => false,
'apply_to' => '',
'is_configurable' => false,
'option' => array(
'value' => array(
$this->getAttributeName($specific) => array($specific)
)
)
));
$installer->endSetup();
$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key));
$attr->setDefaultValue($attr->getSource()->getOptionId($this->getAttributeName($specific)));
$attr->save();
ただし、このコードを使用して新しいオプションを追加しようとすると、 $specific = "Pepsi"; になります。
$model = Mage::getModel('catalog/resource_eav_attribute');
$option = array();
$option['attribute_id'] = $attr;
$option['value'][$this->getAttributeName($specific)][1] = $specific;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
「デフォルトのオプション値が定義されていません」というエラーが表示されます