我有一个existing嵌入代码的属性。我需要将此属性与 120 多个现有属性集相关联。
如果我知道属性集 ID,如何以编程方式将该属性添加到所有属性集?
我发现为这个问题编写代码很有趣,所以这里是有效的解决方案:)
在 php 脚本(包括 mage.php)中运行此代码,并让我知道它是否运行良好。
将 (firstname) 替换为您要批量添加到所有属性集中的属性代码
$attSet = Mage::getModel('eav/entity_type')->getCollection()->addFieldToFilter('entity_type_code','catalog_product')->getFirstItem(); // This is because the you adding the attribute to catalog_products entity ( there is different entities in magento ex : catalog_category, order,invoice... etc )
$attSetCollection = Mage::getModel('eav/entity_type')->load($attSet->getId())->getAttributeSetCollection(); // this is the attribute sets associated with this entity
$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')
->setCodeFilter('firstname')
->getFirstItem();
$attCode = $attributeInfo->getAttributeCode();
$attId = $attributeInfo->getId();
foreach ($attSetCollection as $a)
{
$set = Mage::getModel('eav/entity_attribute_set')->load($a->getId());
$setId = $set->getId();
$group = Mage::getModel('eav/entity_attribute_group')->getCollection()->addFieldToFilter('attribute_set_id',$setId)->setOrder('attribute_group_id',"ASC")->getFirstItem();
$groupId = $group->getId();
$newItem = Mage::getModel('eav/entity_attribute');
$newItem->setEntityTypeId($attSet->getId()) // catalog_product eav_entity_type id ( usually 10 )
->setAttributeSetId($setId) // Attribute Set ID
->setAttributeGroupId($groupId) // Attribute Group ID ( usually general or whatever based on the query i automate to get the first attribute group in each attribute set )
->setAttributeId($attId) // Attribute ID that need to be added manually
->setSortOrder(10) // Sort Order for the attribute in the tab form edit
->save()
;
echo "Attribute ".$attCode." Added to Attribute Set ".$set->getAttributeSetName()." in Attribute Group ".$group->getAttributeGroupName()."<br>\n";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)