Creating attributes and assigning them to existing attribute sets is a solved problem but we are running into an issue trying to create an attribute set and populate it with default and specific attributes is failing. This is the code in use:
$setup->addAttributeSet('catalog_product', 'women_sizing_denim');
$oAttributeSetModel = Mage::getModel("eav/entity_attribute_set")
->load($setup->getAttributeSetId('catalog_product', 'women_sizing_denim'))
->initFromSkeleton($setup->getAttributeSetId('catalog_product', 'default'))
->save();
I can verify by debugging through that the initfromSkeleton
method does load the attributes from the default attribute_set as advertised, however after the save()
, the new set is empty.
Adding new attributes to the set is possible, so it does exist and is created correctly, but the missing default attributes make it unusable since SKU, price, name, etc are all required.
I remember that the issue with creating attribute sets based on the default attribute set was, that you need to save the attribute set twice, once before calling initSkeleton()
and once after it.
I don't remember the exact reason anymore, it's too long ago. Anyway, here's what worked for me:
// Mage_Eav_Model_Entity_Setup
$oEntitySetup = $this;
$oEntitySetup->startSetup();
$sNewSetName = 'myset';
$iCatalogProductEntityTypeId = (int) $oEntitySetup->getEntityTypeId('catalog_product');
$oAttributeset = Mage::getModel('eav/entity_attribute_set')
->setEntityTypeId($iCatalogProductEntityTypeId)
->setAttributeSetName($sNewSetName);
if ($oAttributeset->validate()) {
$oAttributeset
->save()
->initFromSkeleton($iCatalogProductEntityTypeId)
->save();
}
else {
die('Attributeset with name ' . $sNewSetName . ' already exists.');
}
$oEntitySetup->endSetup();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With