Magento: добавить новый атрибут ко всем продуктам - PullRequest
2 голосов
/ 07 марта 2012

Я хочу добавить новый атрибут ко всем продуктам. Я сделал это с помощью установочного скрипта

$installer = $this;
$installer->startSetup();

$this->addAttribute('catalog_product','test2',array(
    'label'     => 'test2',
    'type'      => 'varchar',
    'visible'   => true,
    'required'  => false,
    'required'  => 0
));

Но как я могу добавить значения к этому атрибуту с помощью

$entityTypeId     = $installer->getEntityTypeId('catalog_product');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttributeGroup($entityTypeId, 'Default', 'test2', 0);
$installer->endSetup();

Ответы [ 3 ]

10 голосов
/ 07 марта 2012

Это один из примеров кода, который я использовал для создания своего собственного атрибута продукта: -

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

$installer->startSetup();

$attrCode = 'test2';
$attrGroupName = 'Test Group';
$attrLabel = 'Test 2';
$attrNote = 'Test Note';

$objCatalogEavSetup = Mage::getResourceModel('catalog/eav_mysql4_setup', 'core_setup');
$attrIdTest = $objCatalogEavSetup->getAttributeId(Mage_Catalog_Model_Product::ENTITY, $attrCode);

if ($attrIdTest === false) {
    $objCatalogEavSetup->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attrCode, array(
        'group' => $attrGroupName,
        'sort_order' => 7,
        'type' => 'varchar',
        'backend' => '',
        'frontend' => '',
        'label' => $attrLabel,
        'note' => $attrNote,
        'input' => 'text',
        'class' => '',
        'source' => '',
        'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible' => true,
        'required' => false,
        'user_defined' => true,
        'default' => '0',
        'visible_on_front' => false,
        'unique' => false,
        'is_configurable' => false,
        'used_for_promo_rules' => true
    ));
}

$installer->endSetup();

Это используется со ссылками на эти две статьи: -

Кроме того, вы обнаружите, что я использовал ключ массива "group", чтобы упомянуть имя группы атрибутов, где будет находиться этот новый пользовательский атрибут.Ирония заключается в том, что упоминание этого ключа в приведенном выше примере кода автоматически создает этот атрибут в каждом наборе атрибутов, найденном в этом Magento.

Таким образом, вам не нужно вызывать какой-либо метод (например, "addAttributeToSet()"), чтобы добавить этот атрибут ко всем наборам атрибутов.

Надеюсь, это поможет.

0 голосов
/ 17 ноября 2016

вы можете добавить пользовательский атрибут к бэкэнду magento, как показано на рисунке. Если вы создаете атрибут продукта как модуль, вы легко можете перемещаться из одной базы данных в другую.

?php
$this->startSetup();
$this->addAttribute(catalog_product, 'featured_product', array(
'group'         => 'General',
'input'         => 'select',
'type'          => 'text',
'label'         => 'Featured Product',
'backend'       => '',
'visible'       => true,
'required'      => false,
'visible_on_front' => true,
'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'source' => 'eav/entity_attribute_source_boolean',
'sort_order'        => 8,
));

$this->endSetup();

.пошаговое объяснение и структура файла .http://www.pearlbells.co.uk/adding-custom-product-attributes-in-magento/

0 голосов
/ 17 ноября 2016

Запустите этот скрипт в корневом каталоге magento. (Измените нужную конфигурацию)

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();                   

$installer->addAttribute('catalog_product', 'snum', array(
             'label'             => 'Serial No',
             'type'              => 'int',
             'input'             => 'text',
             'backend'           => '',
             'frontend'          => '',
             'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
             'visible'           => true,
             'required'          => false,
             'user_defined'      => false,
             'searchable'        => false,
             'filterable'        => false,
             'comparable'        => false,
             'visible_on_front'  => true,
             'visible_in_advanced_search' => false,
             'unique'            => false
));

$installer->endSetup();

?>

Для удаления атрибута продукта

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
 $installer = new Mage_Sales_Model_Mysql4_Setup;
 $installer->startSetup();
 $installer->removeAttribute('catalog_product', 'snum');
 $installer->endSetup();

?>
...