我编写了以下代码,以编程方式在magento中创建属性集...
$skeletonID=Mage::getModel('eav/entity_setup','core_setup')->getAttributeSetId('catalog_product','Default');
// echo $skeletonID;
$model = Mage::getModel('eav/entity_attribute_set');
$entityTypeID = Mage::getModel('catalog/product')->getResource()->getTypeId();
$model->setEntityTypeId($entityTypeID);
$model->setAttributeSetName("Mat");
$model->initFromSkeleton($skeletonID);
$model->validate();
$model->save();
现在,我能够看到一个新的属性集,其中包含与“默认”属性集相同的组,但是,没有分配任何属性。以下是新属性集的屏幕截图....
请帮我看看如何根据默认值创建属性集。
答案 0 :(得分:0)
您需要在模块config.xml中有一个看起来像这样的块
<resources>
<namespace_module_setup><!-- becomes folder under sql dir -->
<setup>
<module>Namespace_Module</module>
<class>Mage_Eav_Model_Entity_Setup</class>
</setup>
</namespace_module_setup>
</resources>
这将允许您将安装程序代码放在XML中的目录中。您需要确保安装程序文件中列出的版本与模块的1.2.0匹配,否则Magento将无法运行您的安装程序。要添加属性Set,您可以使用以下数据,我从未使用过它,但entityTypeId分别定义了客户,运输,类别,产品实体,分别为1,2,3,4。
/**
* Add Attribute Set
*
* @param mixed $entityTypeId
* @param string $name
* @param int $sortOrder
* @return Mage_Eav_Model_Entity_Setup
*/
public function addAttributeSet($entityTypeId, $name, $sortOrder = null)
{
$data = array(
'entity_type_id' => $this->getEntityTypeId($entityTypeId),
'attribute_set_name' => $name,
'sort_order' => $this->getAttributeSetSortOrder($entityTypeId, $sortOrder),
);
$setId = $this->getAttributeSet($entityTypeId, $name, 'attribute_set_id');
if ($setId) {
$this->updateAttributeSet($entityTypeId, $setId, $data);
} else {
$this->_conn->insert($this->getTable('eav/attribute_set'), $data);
$this->addAttributeGroup($entityTypeId, $name, $this->_generalGroupName);
}
return $this;
}
这是将属性添加到集合的代码,只需更改属性集数据
//app/code/local/Namespace/Module/sql/Namespace_Module_setup/mysql4-install-1.0.0.php
$installer = $this;
/* @var $installer Mage_Eav_Model_Entity_Setup */
$installer->startSetup();
$data= array (
'attribute_set' => 'Default',
'group' => 'General',
'label' => 'Some Label',
'visible' => true,
'type' => 'varchar', // multiselect uses comma-sep storage
'input' => 'text',
'system' => true,
'required' => false,
'user_defined' => 1, //defaults to false; if true, define a group
);
$installer->addAttribute('catalog_product','attriute_code',$data)
$installer->endSetup();
以上是模块的属性集和属性安装的工作示例。