Cela fait un petit moment que je cherchais le meilleur moyen de créer un produit KIT avec Magento.
Ma définition d'un KIT :
- C'est un produit à prix fixe et imposé (la plupart du temps discount mais ce n'est pas obligatoire) composé de plusieurs produits simples dont le client ne peut déterminer la quantité. L'achat de ce produit agira sur les stocks de chacun des produits simples.
Dans Magento le produit groupé n'est pas adapté :
- on ne peut pas imposer un prix fixe,
- le client a accès à la quantité de chaque produit simple même si on peut imposer la quantité par défaut.
Le produit packagé se rapproche plus du besoin mais n'est pas parfait dans l'état.
- on peut imposer le prix de l'ensemble et aussi un prix spécial en % (90% pour une réduction de 10% par exemple).
- Dans la rubrique Articles packagés, on peut créer une option en mode Checkbox obligatoire, y associer autant de produits que l'on veut qu'on positionnera tous par défaut.
- Comme on a imposé le prix du produit packagé, le prix de chaque option sera fixé à 0.
Si on visualise le produit ainsi créé on constate les problèmes suivants :
- Les checkbox pour chaque produit simple apparaissent (cochées) mais sont inutiles (voire dangereuses car le client peut en décocher certaines ce qui ne changera pas le prix global).
- Le prix 0.00€ apparait pour chaque produit simple ce qui est faux dans l'absolu et de surcroit inutile car troublant pour le client.
Pour le premier problème, j'ai trouvé un palliatif dans
ce post sur le forum officiel. Il suffit d'ajouter un bout de code javasript dans (par exemple) la rubrique description du produit packagé. les Checkbox sont masquées.
Pour le deuxième problème j'ai simplement extrapolé le code pour masquer le prix.
Voici donc le code à adapter en fonction de votre produit packagé à insérer dans sa rubrique description.
| Code : |
<script type='text/javascript'>
/* masquage des checkbox (inutiles */
var x = document.getElementsByClassName('checkbox bundle-option-91 validate-one-required-by-name');for (var i=0;i<x.length;i++) {x[i].style.display = 'none';x[i].onclick = checkall;}function checkall(){var x = document.getElementsByClassName('checkbox bundle-option-91 validate-one-required-by-name');for (var i=0;i<x.length;i++) {x[i].checked = true}}
/* masquage du prix des items (inutile et à 0) */
var y = document.getElementsByClassName('price-notice'); for (var i=0;i<y.length;i++) {y[i].style.display = 'none';}</script>
|
Vous n'aurez qu'à adapter la chaine de caractères
| Code : |
'checkbox bundle-option-91 validate-one-required-by-name'
|
en fonction de votre produit packagé, pour cela utiliser Firebug pour découvrir la classe css des checkbox après une 1ère sauvegarde du produit et un essai frontend.
- çà fonctionne en 1.4.1.0
- cela ne remplace pas un vrai produit KIT mais çà dépanne.
- Cette solution est particulièrement adaptée à un kit fait d'une quantité conséquente de produits simples (à partir de 5 selon mon expérience). Pour les kits plus petits on peut appliquer une autre solution de contournement (voir plus loin) qui est cependant plus lourde de mise en œuvre et présente d'autre part quelques défaut d'affichage.
Si quelqu'un a une meilleure idée je suis preneur.
Ce qui est un peu dommage c'est que le prix spécial qu'on applique au produit packagé ne fait pas apparaitre le prix fort barré. Mais c'est complètement indépendant de la modification proposée.
Alternative sans code javascript :
- on peut passer en prix dynamique au niveau du prix du produit packagé
- il faut créer une option par produit simple incorporé au produit packagé.
- cette option sera checkbox obligatoire.
- la quantité sera 1 et par défaut pour chaque produit simple.
Inconvénients :
- Au niveau du prix du produit packagé en mode grille apparait un "à partir de" faux et inutile.
- Lourdeur de la saisie quand on incorpore plus de 5 produits au kit
- Lourdeur de l'affichage en front.