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?
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:
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();
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 $option
cấu trúc mảng.
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.
Ví dụ: bạn muốn thêm Men
giá trị cho gender
tù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();
Đ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);
}
'r'
,'b'
,'y'
trong$option['value']['r'][0] = 'Red';
?