Ton*_*ony 7 php attributes options magento entity-attribute-value
我正在尝试使用脚本为magento中的属性选项添加新值以加快进程,因为我有超过2,000个制造商
Jon*_*Day 17
这是我用来执行此任务的一段代码.创建一个自定义模块(使用ModuleCreator作为工具),然后mysql4-install-0.1.0.php在sql/modulename_setup文件夹下创建一个.它应该包含以下内容(当然适用于您自己的数据!).
$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$aManufacturers = array('Sony','Philips','Samsung','LG','Panasonic','Fujitsu','Daewoo','Grundig','Hitachi','JVC','Pioneer','Teac','Bose','Toshiba','Denon','Onkyo','Sharp','Yamaha','Jamo');
$iProductEntityTypeId = Mage::getModel('catalog/product')->getResource()->getTypeId();
$aOption = array();
$aOption['attribute_id'] = $installer->getAttributeId($iProductEntityTypeId, 'manufacturer');
for($iCount=0;$iCount<sizeof($aManufacturers);$iCount++){
$aOption['value']['option'.$iCount][0] = $aManufacturers[$iCount];
}
$installer->addAttributeOption($aOption);
$installer->endSetup();
Run Code Online (Sandbox Code Playgroud)
如果需要,可以在Magento wiki上获得更多文档.
如果您不想在自定义模块中执行此操作,则可以创建一个以以下内容开头的php文件:
require_once 'app/Mage.php';
umask(0);
Mage::app('default');
Run Code Online (Sandbox Code Playgroud)
Jonathan的回答是正确的.但是如果你想在没有安装程序的情况下执行它,即在任何其他代码中执行它,那么你可能会觉
$arg_attribute = 'manufacturer';
$manufacturers = array('Sony','Philips','Samsung','LG','Panasonic','Fujitsu','Daewoo','Grundig','Hitachi','JVC','Pioneer','Teac','Bose','Toshiba','Denon','Onkyo','Sharp','Yamaha','Jamo');
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();
$option['attribute_id'] = $attr_id;
foreach ($manufacturers as $key=>$manufacturer) {
$option['value'][$key.'_'.$manufacturer][0] = $manufacturer;
}
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到.
我创建了一个函数来动态添加选项到属性
public function addAttributeOptions($attributeCode, $argValue)
{
$attribute = Mage::getModel('eav/config')
->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode);
if ($attribute->usesSource()) {
$id = $attribute->getSource()->getOptionId($argValue);
if ($id)
return $id;
}
$value = array('value' => array(
'option' => array(
ucfirst($argValue),
ucfirst($argValue)
)
)
);
$attribute->setData('option', $value);
$attribute->save();
//return newly created option id
$attribute = Mage::getModel('eav/config')
->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode);
if ($attribute->usesSource()) {
return $attribute->getSource()->getOptionId($argValue);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过提供代码和选项值来向属性添加选项
$this->addAttributeOptions('unfiorm_type', 'leotartd')
Run Code Online (Sandbox Code Playgroud)