Convertir le type d'attribut de texte DropDown
-
16-10-2019 - |
Question
Comment puis-je convertir un type d'attribut de produit de texte à sélectionner dans la Magento backend. Y at-il une fonctionnalité ou nous devons écrire du code personnalisé dans construit pour cela?
J'ai déjà des valeurs d'attributs assignés pour de nombreux produits, donc ne veulent pas perdre que cette conversion.
Merci
La solution
Vous auriez d'abord besoin d'avoir un script qui stocke toutes les valeurs par produit dans un fichier CSV par exemple
[...]
$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('your-attribute');
foreach ($collection as $product) {
echo "{$product->getId()};{$product->getData('your-attribute')}\n";
}
[...]
exécution du présent php /path/to/script.php > values.csv
de ligne de commande va créer un fichier CSV avec les valeurs de ID et d'attribut.
Maintenant, l'étape suivante serait de supprimer l'ancien attribut et de créer une nouvelle avec les valeurs de texte que les options déroulantes.
Ensuite, nous devons importer ces valeurs récupérer à nouveau l'option ID de la valeur qui devrait maintenant être l'étiquette admin
[...]
$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);
}
[...]
Ce code est non testé donc s'il vous plaît ne pas utiliser dans un environnement de production. Faites-moi savoir si cela a fonctionné pour vous.