1

次のリンクにリストされているコードを使用しています。

http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/programmatically_adding_attributes_and_attribute_sets

ポイントまですべてが機能します:

    // Just add a default group.
    else
    {
        $this->logInfo("Creating default group [{$this->groupName}] for set.");

        $modelGroup = Mage::getModel('eav/entity_attribute_group');
        $modelGroup->setAttributeGroupName($this->groupName);
        $modelGroup->setAttributeSetId($id);

        // This is optional, and just a sorting index in the case of
        // multiple groups.
        // $modelGroup->setSortOrder(1);

        $model->setGroups(array($modelGroup));
    }

オブジェクト参照をどこから設定する必要があるのか​​ わかりません-これを自動化できる別のファイルとして作成しようとしています-このファイルを次のようにして実行しています

require_once 'app/Mage.php'; 
Mage::app(); 

これでどんな助けでも大歓迎です

4

3 に答える 3

12

モジュールの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 内のディレクトリに配置できます。インストーラー ファイルに記載されているバージョンがモジュールのバージョンと一致していることを確認する必要があります。一致して<version>1.2.0</version>いない場合、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();

上記は、モジュールの属性インストールの実際の例です。

于 2012-04-16T14:22:48.283 に答える
5

これには、より簡単なワンライナーがあります。インストールスクリプト用にMage_Eav_Model_Entity_Setupを拡張し、インストーラーで次のようなものを使用するだけです。

$installer = $this;
/* @var $installer Mage_Eav_Model_Entity_Setup */

$installer->startSetup();
$installer->addAttributeSet(Mage_Catalog_Model_Product::ENTITY, 'New Attribute Set Name');
$installer->endSetup();
于 2012-08-30T19:08:06.413 に答える
1

これをインストーラーとして実装する必要があるため、Magento はモジュールのインストール (またはアップグレード) 時にそれをロードします。$this、例では、そのインストーラー クラスを意味します。

https://bitbucket.org/alexsiri7/qbmagemoduleshellを使用してモジュールとインストーラーを作成し、そこにそのコードを追加できます。そのツールは私が開発したモジュールクリエーターです。

于 2012-04-13T23:24:48.777 に答える