php - crear conjunto de atributos en la secuencia de comandos de configuración de Magento
attributes entity-attribute-value (3)
Crear atributos y asignarlos a conjuntos de atributos existentes es un problema resuelto, pero nos encontramos con un problema al intentar crear un conjunto de atributos y poblarlo con atributos predeterminados y específicos que están fallando. Este es el código en uso:
$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();
Puedo verificar depurando que el método initfromSkeleton
carga los atributos del attribute_set predeterminado como se anuncia, sin embargo después del save()
, el nuevo conjunto está vacío.
Es posible agregar nuevos atributos al conjunto, por lo que existe y se crea correctamente, pero los atributos predeterminados faltantes lo hacen inutilizable ya que se requieren SKU, precio, nombre, etc.
Recuerdo que el problema con la creación de conjuntos de atributos basados en el conjunto de atributos predeterminado era que necesita guardar el conjunto de atributos dos veces , una antes de llamar a initSkeleton()
y una vez después.
Ya no recuerdo la razón exacta, hace mucho tiempo. De todos modos, esto es lo que funcionó para mí:
// 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();
Tenga en cuenta que la clase de instalación necesita extenderse
Mage_Catalog_Model_Resource_Eav_Mysql4_Setup
así que eso
$oEntitySetup->getEntityTypeId(''catalog_product'');
puede ser llamado.
Usé la respuesta de Jürgen Thelen que funcionó.
Pero encontré que el nuevo conjunto de atributos no tenía las opciones predeterminadas y el grupo de opciones, como generales y de facturación, etc.
Para evitar esto, incluya $ installer-> getAttributeSetId (''catalog_product'', ''default'') en el initFromSkeleton ()
if($attributeSet->validate()) {
$attributeSet
->save()
->initFromSkeleton($installer->getAttributeSetId(''catalog_product'', ''default''))
->save();
} else {
die(''Attributeset with name '' . $setName . '' already exists.'');
}