TL; DR : Y a-t-il une raison pour laquelle les produits simples associés à un produit configurable doivent être dans le même ensemble d'attributs que le produit configurable lui-même? Je veux dire, y a-t-il une raison technique ? Je connais la raison du "bon sens". Si vous vendez une paire de chaussures, toutes les versions en fonction de la couleur et de la taille doivent également être des chaussures .
Version longue : j'ai eu la tâche de "fusionner" certains produits configurables. Je veux dire de 2 ou plus pour n'en faire qu'un. Je ne voulais pas les faire manuellement à cause de la quantité de produits et je ne voulais pas passer par$product->load(..)->set...()->save()
en raison du temps qu'il a fallu pour exécuter le script. J'ai donc court-circuité le processus car j'étais sûr qu'aucun des produits simples ne se chevauchait. Il y avait une combinaison unique de taille et de couleur. J'ai fait ça:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
où $simpleProductIds
est un tableau de tous les identifiants de produit simples associés tous aux produits configurables qui doivent être fusionnés.
Cela fonctionnait parfaitement pour la plupart des produits, mais il y en avait quelques-uns qui avaient des problèmes.
Si j'ai appelé
$productIds = $product->getTypeInstance()->getUsedProductIds()
J'obtiendrais tous les identifiants de produit simples, mais dans le backend, seuls quelques-uns d'entre eux sont apparus. Après avoir creusé pendant un certain temps, j'ai découvert que les seuls qui étaient affichés étaient ceux du même ensemble d'attributs que le produit configurable. L'autre jeu d'attributs est très similaire au premier, juste quelques différences mineures mais il contient les attributs configurables (taille et couleur).
Et maintenant la chose étrange. Dans le frontend, je m'attendais à voir tous les produits ($ productIds dans le code ci-dessus) ou uniquement les produits du même ensemble d'attributs. Eh bien, il y avait quelque chose entre les deux.
- 20 identifiants de produits associés - 5 tailles, 4 couleurs
- 10 produits associés dans le backend - 5 tailles, 2 couleurs - les 2 autres couleurs (10 produits) étaient dans un ensemble d'attributs différent
- 15 combinaisons dans le frontend - 5 tailles 3 couleurs (???)
J'ai pu résoudre le problème en modifiant l'ensemble d'attributs pour les produits qui n'apparaissaient pas, mais je suis toujours perplexe.
Remarque : N'essayez pas cela à la maison. Ou vous pouvez l'essayer à la maison mais pas sur un serveur en direct.
Nous utilisons une extension appelée RapidFlow par Unirgy (que je ne peux pas recommander assez fortement) pour l'importation et l'exportation. L'une des fonctionnalités de la version Pro permet de modifier les jeux d'attributs. Un autre est la création de produits via l'importation CSV. Parfois, nous créons de nouveaux produits simples pour les éléments configurables, et parfois par accident, ces produits simples ont des jeux d'attributs différents de ceux de leurs parents.
Rapidflow importera volontiers ces produits et modifiera les jeux d'attributs. Nous ne sommes généralement pas satisfaits des résultats. Les produits configurables configurés par des attributs en dehors de leur ensemble d'attributs ne s'affichent pas dans l'administrateur du produit et doivent être réparés. Si nous ne modifions pas l'ensemble d'attributs du parent, comme vous l'avez noté, les enfants ne sont tout simplement pas correctement associés à leur parent. Ils existent en tant qu'entités Magento, peuvent être modifiés, mais n'apparaîtront pas comme des enfants sur la page du produit frontal ou dans la liste de produits associée du parent configurable.
Donc, d'un point de vue purement technique, il est possible que des produits simples soient dans un ensemble d'attributs différent de leur parent. Mais comme ce comportement n'est pas pris en charge, même en EE, et donc Razor d'Occam dit que lorsqu'ils ont conçu Magento, les développeurs de Varien n'ont pas vu le besoin.
la source