如何以编程方式在magento中基于默认设置创建属性集?

时间:2015-02-25 10:20:30

标签: magento

我编写了以下代码,以编程方式在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();

现在,我能够看到一个新的属性集,其中包含与“默认”属性集相同的组,但是,没有分配任何属性。以下是新属性集的屏幕截图....

Screenshot

请帮我看看如何根据默认值创建属性集。

1 个答案:

答案 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();

以上是模块的属性集和属性安装的工作示例。