Làm thế nào để lập trình thêm các giá trị tùy chọn thuộc tính trong tập lệnh nâng cấp dữ liệu?


10

Tôi muốn lập trình thêm các giá trị tùy chọn sản phẩm mới trong tập lệnh nâng cấp dữ liệu của mô-đun. Tôi có thể làm cái này như thế nào?

Câu trả lời:


12

Thêm mã dưới đây vào tập tin nâng cấp của bạn

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

$attributeCode = 'manufacturer';
$attribute = Mage::getModel('eav/entity_attribute')->loadByCode('catalog_product', $attributeCode);

if ($attribute->getId() && $attribute->getFrontendInput()=='select') {
    $option['attribute_id'] = $attribute->getId();
    $option['value']        =  array('Red','Black', 'Yellow');
    $installer->addAttributeOption($option);
}

//OR
/*
if($attribute->getId() && $attribute->getFrontendInput()=='select') {
    $option['attribute_id'] = $attribute->getId();
    $option['value']['r'][0] = 'Red';
    $option['value']['b'][1] = 'Black';
    $option['value']['y'][2] = 'Yellow';
    $installer->addAttributeOption($option);
}*/

$installer->endSetup();

Kiểm tra mã giá trị tùy chọn trùng lặp:

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

$attributeCode = 'manufacturer';
$attribute = Mage::getModel('eav/entity_attribute')->loadByCode('catalog_product', $attributeCode);

 if($attribute->getId() && $attribute->getFrontendInput()=='select') {
    $newOptions =  array('Red','Black', 'Yellow');
    $exitOptions =  array();
    $options = Mage::getModel('eav/entity_attribute_source_table')
                        ->setAttribute($attribute)
                        ->getAllOptions(false);
    foreach ($options as $option) {
        if (in_array($option['label'], $newOptions)) {
            array_push($exitOptions, $option['label']);
        }else {

        }
    }
    $insertOptions = array_diff($newOptions, $exitOptions);
    if(!empty($insertOptions)) {
        $option['attribute_id'] = $attribute->getId();
        $option['value']        =  $insertOptions;  
        $installer->addAttributeOption($option);
    }            
}

$installer->endSetup();

1
Ý nghĩa của chỉ số là gì 'r', 'b', 'y'trong $option['value']['r'][0] = 'Red';?
Anton Belonovich

1
Điều đó tạo ra một tùy chọn thả xuống bị hỏng ở đây, trên Magento CE 1.9. Bảng eav_attribute_optionđược một hàng mới, nhưng không có một hàng tương ứng eav_attribute_option_value. Phải là một cái gì đó với $optioncấu trúc mảng.
Anse

Xin vui lòng giúp tôi kiểm tra giá trị thuộc tính nếu giá trị đó đã có sẵn. Vì vậy, giá trị trùng lặp không được chèn vào thuộc tính
Purushotam Sharma

@Purushotam Sharma: Cập nhật ans vui lòng kiểm tra và cho tôi biết nó có hoạt động hay không vì tôi không được kiểm tra mã.
Abdul

xin chào @Abdul! tùy chọn không thêm của nó trong khi chạy tập lệnh này
SagarPPanchal

12

thử cái này,

cho một giá trị duy nhất: -

$arg_attribute = 'color';
$arg_value = 'red';

$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();

$option['attribute_id'] = $attr_id;
$option['value']['any_option_name'][0] = $arg_value;

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);

cho nhiều giá trị: -

$arg_attribute = 'color';
$key_data = array('red','black','orange');
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
foreach($key_data as $key_value)
{   
    $option = array();
    $arg_value = trim($key_value);
    $attr_id = $attr->getAttributeId();
    $option['attribute_id'] = $attr_id;
    $option['value']['any_option_name'][0] = $arg_value;
    $setup->addAttributeOption($option);
}

'any_option_name' sẽ là color_name (ví dụ: đỏ) arg_value sẽ là tùy chọn số nguyênId afaik.

Điều cũng cần phải có được trước tiên, đó là tùy chọn không sử dụng tiếp theo là gì. Được sử dụng cho tùy chọn thuộc tính mới này.


6

Ví dụ: bạn muốn thêm Mengiá trị cho gendertùy chọn.

Trước tiên, bạn phải tạo tập lệnh nâng cấp của mình trong thư mục mô-đun, vd app/code/local/MyCompany/MyModule/data/mymodule_setup/data-upgrade-0.1.0-0.1.1.php.

Sau đó điền nó với mã như thế này:

<?php

$this->startSetup();

$genderAttribute = Mage::getModel('eav/entity_attribute')
    ->loadByCode('catalog_product', 'gender'); // 'gender' is your attribute code

$this->addAttributeOption([
    'attribute_id' => $genderAttribute->getId(),
    'value' => [[0 => 'Men', 1 => 'Men', 10 => 'Men']] // array indexes are store IDs
]);

$this->endSetup();

2

Đoạn mã sau thêm tùy chọn thuộc tính lập trình magento 1.

Vui lòng tham khảo giải thích chi tiết cách đọc từ CSV và so sánh với các tùy chọn thuộc tính hiện có https://www.pearlbells.co.uk/add-attribution-options-magento-scripts/

function createAttribute( $options , $attributeCode) {
$option = array('attribute_id' => 
Mage::getModel('eav/entity_attribute')->getIdByCode(
     Mage_Catalog_Model_Product::ENTITY, 
     $attributeCode
    )
);

for ($i = 0; $i < count($options); $i++) {

    $option['value']['option'.$i][0] = $options[ $i ]; // Store View
    $option['value']['option'.$i][1] = $options[ $i ]; // Default store view
    $option['order']['option'.$i] = $i; // Sort Order
    echo 'Insert new option : '.$options[ $i ].PHP_EOL;

}

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.