Преобразование типа атрибута из текста в раскрывающийся список
Как я могу преобразовать тип атрибута продукта из текста в выделенный в бэкэнде Magento. Есть ли какие-либо встроенные функции или для этого нам нужно написать собственный код?
У меня уже есть значения атрибутов, назначенные для многих продуктов, поэтому я не хочу потерять их в этом преобразовании.
Спасибо
1 answers
Сначала вам понадобится скрипт, который хранит все значения для каждого продукта в формате CSV, например
[...]
$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('your-attribute');
foreach ($collection as $product) {
echo "{$product->getId()};{$product->getData('your-attribute')}\n";
}
[...]
Выполнение этого из командной строки php /path/to/script.php > values.csv
создаст CSV-файл со значениями идентификаторов и атрибутов.
Теперь следующим шагом будет удаление старого атрибута и создание нового с текстовыми значениями в качестве раскрывающихся параметров.
Затем нам нужно снова импортировать эти значения, извлекая идентификатор опции из значения, которое теперь должно быть администратором метка
[...]
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'your-attribute');
$attribute_source = Mage::getModel('eav/entity_attribute_source_abstract');
$attribute_source->setAttribute($attribute);
if (($handle = fopen("your-csv-file.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
list($_id, $_value) = $data;
$product = Mage::getModel('catalog/product')->load($_id);
$product->setData('your-attribute', $attribute_source->getOptionId($_value));
try {
$product->save();
} catch(Exception $e) {
echo "{$_id}: {$e}";
}
}
fclose($handle);
}
[...]
Этот код непроверен, поэтому, пожалуйста, не используйте его в производственной среде. Дайте мне знать, сработало ли это для вас.