Проблема атрибута продукта с набором атрибутов с помощью сценария установщика

magento.stackexchange https://magento.stackexchange.com/questions/10543

Вопрос

Я сталкиваюсь с проблемой, касающейся создания атрибутов и набора атрибутов с использованием Script Script.atribute Set и Attribute создается, но проблема заключается в том, что атрибуты присваиваются всем набору атрибутов, а не на пользовательском создании с помощью сценария установщика.

Ниже приведен мой сценарий установщика:

<?php
$installer = $this;
$installer->startSetup();
try{
$sNewSetName = 'Product Bundler Package';
$iCatalogProductEntityTypeId = (int) $installer->getEntityTypeId('catalog_product');

$oAttributeset = Mage::getModel('eav/entity_attribute_set')
    ->setEntityTypeId($iCatalogProductEntityTypeId)
    ->setAttributeSetName($sNewSetName);

if ($oAttributeset->validate()) {
    $oAttributeset
        ->save()
        ->initFromSkeleton($installer->getAttributeSetId('catalog_product', 'Default'))
        ->save();
}
else {
    Mage::log('Attributeset with name ' . $sNewSetName . ' already exists.');
    }
}
catch(Exception $ex){
Mage::log('Attributeset with name ' . $sNewSetName . ' already exists.');

}


    $installer->addAttributeGroup('catalog_product', 'Product Bundler Package', 'Bundled Package Data', 1000);

    $data1= array (
        'attribute_set' =>  'Product Bundler Package',
        'group' => 'Bundled Package Data',
        'label'    => 'Preset1 name',
        'visible'     => true,
        'type'     => 'varchar', 
        'input'    => 'text',
        'system'   => true,
        'required' => false,
        'user_defined' => 1, 
    );

    $installer->addAttribute('catalog_product','bundle_preset1_name',$data1);

      $data2= array (
        'attribute_set' =>  'Product Bundler Package',
        'group'    => 'Bundled Package Data',
        'label'    => 'Preset2 name',
        'visible'  => true,
        'type'     => 'varchar', 
        'input'    => 'text',
        'system'   => true,
        'required' => false,
        'user_defined' => 1, 
    );
    $installer->addAttribute('catalog_product','bundle_preset2_name',$data2);

    $data3= array (
        'attribute_set' =>  'Product Bundler Package',
        'group' => 'Bundled Package Data',
        'label'    => 'Preset3 name',
        'visible'     => true,
        'type'     => 'varchar', 
        'input'    => 'text',
        'system'   => true,
        'required' => false,
        'user_defined' => 1, 
    );
    $installer->addAttribute('catalog_product','bundle_preset3_name',$data3);

    $data4 = array (
        'attribute_set' =>  'Product Bundler Package',
        'group' => 'Bundled Package Data',
        'label'    => 'Preset4 name',
        'visible'     => true,
        'type'     => 'varchar', 
        'input'    => 'text',
        'system'   => true,
        'required' => false,
        'user_defined' => 1, 
    );
   $attribute =  $installer->addAttribute('catalog_product','bundle_preset4_name',$data4);


$installer->endSetup();
?>

Я хочу создать пользовательские атрибуты с помощью имени набора атрибутов «Пакет продукта Bundler» и назначить все атрибуты только на этот набор атрибутов.

Пожалуйста, помогите мне решить это.

Это было полезно?

Решение

Не очень ясно, что вы хотите сделать на самом деле. В любом случае, это скрипт для создания атрибута продукта после создания набора атрибутов.

<?php

$th =  new Mage_Catalog_Model_Resource_Setup();  
$th->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'your_custom_attribute_code', array(
            'group' => 'Prices', 
            'type' => 'text',
                        'attribute_set' =>  'Default', // Your custom Attribute set
            'backend' => '',
            'frontend' => '',
            'label' => 'My Custom Attribute',
            'input' => 'text',
            'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
            'visible' => true,
            'required' => false,
            'user_defined' => true,
            'default' => '1',
            'searchable' => false,
            'filterable' => true,
            'comparable' => false,
            'visible_on_front' => true,
            'visible_in_advanced_search' => true,
            'used_in_product_listing' => true,
            'unique' => false,
            'apply_to' => 'simple',  // Apply to simple product type
        ) );

Примечание: для получения дополнительной информации обратитесь http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/programmaly_adding_attributes_and_attribute_sets

Другие советы

В основном как ответ @sukeshini, но вам нужно уйти group неопределенные в данных атрибутов и укажите user_defined в качестве true.

Тогда он не будет добавлен ни в какие наборы атрибутов. AFAIK вы не можете определить набор атрибутов при создании атрибута в этом методе. Вы можете добавить атрибут в набор атрибутов после его создания в сценарии обновления или настройки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top