Séparer les déclinaisons en produits distincts
Installer et utiliser le module de découpage d'un produit à déclinaisons en produits distincts, du choix de la stratégie jusqu'à l'annulation d'un découpage.
Installation
Déposez le dossier dfproductsplitter dans le répertoire /modules de votre boutique, puis installez le module depuis Modules et Services du back office. Vous pouvez aussi téléverser directement l’archive ZIP fournie.
À l’installation, le module crée deux tables, PREFIX_df_split_job et PREFIX_df_split_item, et ajoute un onglet Product Splitter sous le menu Catalogue. Aucun override de classe ou de contrôleur n’est déposé, et aucune dépendance Composer n’est requise.
Le module est compatible PrestaShop 8.0 à 9.x et PHP 7.4 à 8.4. Les noms de tables et de constantes qui diffèrent entre PrestaShop 8 et 9 sont résolus automatiquement au moment de l’exécution.
Accéder à l’interface
Rendez-vous dans Catalogue puis Product Splitter. L’écran se compose de quatre blocs : la recherche du produit source, la stratégie de découpage, les options de génération, et l’historique des découpages déjà réalisés.
Le module travaille toujours dans le contexte de la boutique sélectionnée en haut du back office. Les prix, les stocks et les déclinaisons lus sont ceux de cette boutique.
Choisir le produit source
Saisissez un nom, une référence ou un identifiant produit dans le champ de recherche. Seuls les produits possédant au moins une déclinaison sur la boutique courante apparaissent dans les résultats.
Une fois le produit sélectionné, le module affiche son prix, sa référence, le nombre de déclinaisons et le nombre de groupes d’attributs utilisés. Un lien permet d’ouvrir la fiche produit dans un nouvel onglet pour vérification.
Limiter le découpage à certaines déclinaisons
Cochez la case Limiter à certaines déclinaisons pour afficher le tableau complet des combinaisons, avec leur référence, leur impact de prix et leur stock. Décochez celles que vous ne voulez pas extraire. Utile pour ne sortir qu’un coloris d’une gamme, en laissant le reste sur le produit d’origine.
Les deux stratégies de découpage
Un produit par déclinaison
Chaque combinaison devient un produit simple, sans aucune déclinaison. L’impact de prix et l’impact de poids de la combinaison sont reportés dans le prix et le poids de base du nouveau produit. La référence, le code EAN, l’ISBN, l’UPC, le MPN, la quantité minimale et la date de disponibilité de la combinaison sont repris quand ils sont renseignés, sinon les valeurs du produit source servent de repli.
Ce mode convient quand chaque combinaison a une existence commerciale propre, par exemple un parfum vendu en trois contenances ou un logiciel vendu en trois durées de licence.
Un produit par valeur d’un groupe d’attributs
Vous choisissez un groupe d’attributs à extraire, par exemple Couleur. Le module crée un produit par valeur de ce groupe, et les autres groupes restent des déclinaisons du nouveau produit. Un produit à trois couleurs et cinq tailles devient trois produits de cinq déclinaisons chacun.
Si le produit ne comporte qu’un seul groupe d’attributs, ce mode se replie automatiquement sur le mode par déclinaison. Un avertissement est affiché dans l’aperçu.
Comment les prix restent identiques
En mode par groupe, le module retient l’impact de prix le plus faible parmi les combinaisons de chaque valeur extraite. Cet impact est versé dans le prix de base du nouveau produit, puis chaque impact restant est recalculé par soustraction.
Exemple. Un produit à 89 euros, décliné en blanc et noir, avec les tailles S, M et L. Les combinaisons en blanc portent des impacts de 0, 3 et 6 euros. Le produit Blanc est créé à 89 euros, avec des impacts de 0, 3 et 6 euros sur ses trois tailles. Si les impacts en blanc avaient été de 3, 6 et 9 euros, le produit Blanc serait créé à 92 euros avec des impacts de 0, 3 et 6 euros. Dans les deux cas, le prix payé par le client pour une taille donnée est inchangé.
Le poids suit exactement le même traitement.
Options de génération
Modèle de nom
Le nom des produits créés est construit à partir d’un modèle. Trois variables sont disponibles : le nom du produit source, les valeurs d’attributs absorbées, et la référence du produit source. Le modèle par défaut concatène le nom source et les valeurs d’attributs séparés par un tiret.
Le nom est généré indépendamment dans chaque langue de la boutique, avec les valeurs d’attributs traduites. Les caractères interdits par PrestaShop dans un nom de produit sont retirés automatiquement et le résultat est tronqué à 128 caractères.
Modèle de référence
Quatre variables sont disponibles : la référence du produit source, la référence de la combinaison, un slug des valeurs d’attributs, et l’identifiant du produit source. Si le modèle produit une chaîne vide, le module retombe sur la référence de la combinaison puis sur celle du produit source.
Réécriture d’URL
Une réécriture d’URL est générée pour chaque langue à partir du nom du produit. Le module vérifie qu’elle n’existe pas déjà dans la langue concernée et ajoute un suffixe numérique si nécessaire, ce qui évite les collisions et les URL en double.
Images reprises
Trois modes sont proposés. Images de la déclinaison duplique en priorité les images associées aux combinaisons traitées, avec repli sur l’ensemble des images du produit source quand aucune n’est associée. Toutes les images duplique systématiquement l’ensemble des images. Aucune image crée les produits sans visuel.
La duplication est physique. Le fichier original et toutes les miniatures déjà générées sont copiés, quel que soit leur format, jpg comme webp ou avif, et les légendes traduites sont recopiées. La première image de chaque produit devient sa couverture.
Données à reprendre
Dix cases à cocher pilotent la reprise des stocks, des catégories, des caractéristiques, des mots clés, des prix spécifiques, des transporteurs, des fichiers joints, des fournisseurs, des champs de personnalisation et des accessoires du produit source. Les neuf premières sont activées par défaut.
Traitements complémentaires
Convertir les attributs absorbés en caractéristiques crée une caractéristique portant le nom public du groupe d’attributs, et une valeur portant le nom de l’attribut, puis rattache le tout au produit généré. Si la caractéristique ou la valeur existent déjà, elles sont réutilisées. Pratique pour conserver la couleur comme critère de filtre après le découpage.
Relier entre eux les produits générés ajoute chaque produit créé en accessoire de tous les autres issus du même découpage.
Réindexer la recherche relance l’indexation de la recherche PrestaShop sur les produits créés, à la fin du traitement.
Statut des produits créés
Au choix, identique au produit source, tous actifs, ou tous désactivés. Le mode désactivé permet de vérifier les fiches avant leur mise en ligne.
Prévisualiser avant d’écrire
Le bouton Prévisualiser calcule le plan complet sans rien écrire en base. Vous obtenez le nombre de produits qui seront créés, puis pour chacun son nom, le nombre de déclinaisons conservées, le prix hors taxes et le poids résultants.
Le bouton Lancer le découpage reste désactivé tant qu’une prévisualisation n’a pas été faite, et se désactive de nouveau dès que vous modifiez une option.
Exécuter le découpage
Au lancement, le module enregistre un job en base avec la configuration complète et la liste des produits à générer, puis traite les éléments par lots successifs en AJAX. Une barre de progression indique l’avancement et un journal liste chaque produit créé avec un lien direct vers sa fiche.
Le champ Produits traités par lot contrôle le nombre de produits créés à chaque requête. La valeur par défaut est de cinq.
Sur un hébergement mutualisé ou sur des produits comportant beaucoup d’images, réduisez la taille du lot à deux ou trois. Le traitement sera un peu plus long mais ne risquera pas d’atteindre le temps limite d’exécution PHP.
Le sort du produit source
Quatre comportements sont proposés, appliqués une fois tous les produits générés.
- Conserver tel quel. Le produit source reste actif et inchangé. Vous obtenez temporairement des doublons dans le catalogue, ce qui permet de comparer avant de trancher.
- Désactiver. Le produit source passe hors ligne mais reste consultable en back office.
- Désactiver et rediriger en 301 vers le premier produit créé. Le produit source est désactivé, son type de redirection passe à redirection permanente vers un produit, et la cible est le premier produit généré. C’est l’option à privilégier quand l’URL d’origine est indexée ou reçoit des liens entrants.
- Supprimer définitivement. Le produit source est supprimé après la génération. Choisissez cette option seulement après avoir vérifié le résultat sur un premier découpage de test.
Historique et annulation
Chaque découpage apparaît dans l’historique avec son identifiant, le produit source, le nombre de produits traités, son statut et sa date. Le bouton Detail déplie la liste des produits générés avec leur statut individuel et un lien vers chaque fiche.
Le bouton Annuler supprime tous les produits générés par ce job, puis restaure le statut actif ou inactif et la redirection d’origine du produit source, tels qu’ils étaient avant le découpage. Le job passe au statut annulé.
Si vous avez choisi de supprimer définitivement le produit source, l’annulation supprime bien les produits générés mais ne peut pas restaurer le produit d’origine. Utilisez cette option uniquement une fois le résultat validé.
Ce qui est repris, en détail
Stocks
La quantité de chaque déclinaison est transférée sur le produit ou la déclinaison correspondante du produit généré. Le comportement en rupture de stock défini sur le produit source est reporté. Le stock du produit source n’est pas décrémenté.
Catégories
Toutes les catégories du produit source sont reprises, y compris la catégorie par défaut.
Caractéristiques
Les caractéristiques sont recopiées. Les valeurs personnalisées, propres à un produit, sont dupliquées pour que chaque produit généré dispose de la sienne.
Prix spécifiques
Les prix spécifiques du produit source sont recopiés. Ceux définis pour toutes les déclinaisons sont repris tels quels. Ceux définis pour une déclinaison précise ne sont repris que si cette déclinaison fait partie du produit généré, et sont alors appliqués au produit entier.
Fournisseurs
Les lignes fournisseur sont reprises au niveau produit. Les doublons entre déclinaisons d’un même fournisseur sont dédupliqués.
Multi-boutique
Les produits générés sont associés aux mêmes boutiques que le produit source.
Cas particuliers et limites
- Les packs de produits ne peuvent pas être découpés. Le module le signale avant tout traitement.
- Les produits virtuels et téléchargeables sont traités normalement.
- Les commandes passées sur le produit source ne sont pas modifiées. Elles continuent de référencer le produit et la déclinaison d’origine.
- Les avis clients rattachés au produit source ne sont pas transférés.
- La règle de gestion des URL canoniques de votre thème peut nécessiter un vidage du cache après un découpage important.
Dépannage
Le traitement s’arrête en cours de route
Réduisez le nombre de produits traités par lot. Les produits comportant de nombreuses images ou de nombreuses déclinaisons sont les plus coûteux. Le job reste en base, mais n’est pas reprenable depuis l’interface : annulez-le depuis l’historique pour supprimer les produits déjà créés, puis relancez avec une taille de lot plus faible.
Les images ne sont pas copiées
Vérifiez les droits en écriture sur le répertoire des images produit, img/p. Le module crée les sous-dossiers nécessaires mais ne peut pas contourner une restriction du système de fichiers.
Les prix ne correspondent pas à ce que j’attendais
Vérifiez la prévisualisation, qui affiche le prix hors taxes calculé pour chaque produit. En mode par groupe, le prix de base d’un produit correspond au prix source augmenté de l’impact minimal du groupe extrait pour cette valeur, ce qui n’est pas nécessairement l’impact de la déclinaison par défaut.
Deux produits portent la même réécriture d’URL
Le module vérifie l’unicité au moment de la création et ajoute un suffixe numérique en cas de collision. Si le conflit apparaît après coup, il provient probablement d’un autre module ou d’un import. Modifiez la réécriture depuis l’onglet SEO de la fiche produit.
Désinstallation
La désinstallation supprime l’onglet, les réglages et les deux tables du module. Les produits générés par vos découpages sont conservés. Si vous souhaitez les supprimer, annulez d’abord les jobs concernés depuis l’historique, puis désinstallez le module.