Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Prêt-à-porter en ligne : déclinaisons, tailles et retours

Une boutique de prêt-à-porter n’a pas un problème de catalogue, elle a un problème de combinaisons : la même veste existe en huit tailles et douze couleurs, et chacune de ces variantes vit sa propre vie en base de données.

Décrire mon problème Discuter sur WhatsApp

Le catalogue explose avant le trafic

Sur une boutique de mode, la fiche produit n’est qu’une façade. Ce qui compte, c’est la combinaison. PrestaShop matérialise chaque croisement taille × couleur dans la table product_attribute, et le stock correspondant dans stock_available : 8 tailles et 12 couleurs donnent 96 lignes pour une seule référence. Quelques centaines de modèles suffisent donc à dépasser la dizaine de milliers de combinaisons, et l’administration commence à ramer avant que le premier visiteur n’arrive.

WooCommerce va plus loin : chaque variation est un contenu à part entière, post_type = product_variation, avec sa propre série de lignes dans wp_postmeta. La base grossit vite, les écrans d’édition produit deviennent lourds, et les requêtes de filtrage par taille ou par couleur sont les premières à souffrir. Shopify prend le problème dans l’autre sens : il plafonne le nombre d’options et de variantes par produit. Passé cette limite, il faut scinder un modèle en plusieurs fiches, ce qui disperse le maillage interne et sépare des pages qui auraient dû n’en faire qu’une.

Ce sont d’ailleurs les déclinaisons qui motivent une grande part des demandes que je reçois de marchands textile : saisie des images par déclinaison, prix d’achat par déclinaison, affichage du sélecteur de taille sur mobile.

Ce qui casse quand la garde-robe grandit

  • Les visuels sont rattachés à la couleur et non à la taille : PrestaShop passe par product_attribute_image, et chaque déclinaison d’images définie dans image_type multiplie les fichiers générés sur le disque.
  • Le stock se vide par taille et jamais uniformément : les tailles centrales partent en premier, les extrêmes restent en rayon jusqu’aux soldes.
  • Masquer une taille épuisée fait croire au visiteur que le modèle entier est indisponible ; il faut l’afficher barrée, avec un état explicite.
  • L’échange de taille n’existe nativement dans aucun des trois CMS : c’est soit un avoir, soit une seconde commande, jamais une opération d’un seul tenant.
  • La remise en stock d’un retour doit être conditionnelle : un vêtement revenu porté, taché ou sans son étiquette n’est pas revendable et ne doit pas réapparaître en vente.
  • Le guide des tailles et les correspondances FR/UK/US/IT varient d’une marque à l’autre : ce sont des données produit, pas une image posée dans le pied de page.
  • Les fins de série se soldent par combinaison : une specific_price porte un id_product_attribute, et une remise appliquée au seul produit rate complètement les tailles restantes.

Comment j’interviens sur un catalogue de mode

  1. Je repars du générateur de combinaisons

    Avant d’ajouter quoi que ce soit, je compte les lignes réellement présentes dans product_attribute et stock_available, et celles qui correspondent à des variantes jamais fabriquées. Un catalogue textile traîne souvent des combinaisons nées d’un import qui a croisé toutes les tailles avec toutes les couleurs. Les supprimer allège la base et les écrans d’administration avant même tout travail de performance.

  2. Je rattache les visuels à la couleur

    Je vérifie que chaque image est liée aux combinaisons de la bonne couleur, puis je réduis les formats générés dans image_type à ceux que le thème utilise vraiment. Sur un catalogue à forte rotation saisonnière, c’est ce qui évite un disque saturé de miniatures que personne n’affiche.

  3. Je rends l’indisponibilité lisible

    Une taille en rupture reste visible, barrée, avec un libellé explicite, et le sélecteur indique l’état de chaque taille sans obliger à cliquer une par une. Je branche au même endroit la collecte d’alerte de retour en stock, seul signal fiable sur la demande des tailles extrêmes.

  4. Je traite l’échange comme un flux distinct

    Puisque aucun des trois CMS ne connaît l’échange, je le construis explicitement : une demande de retour typée échange, une réservation de la taille de remplacement pendant le transport, puis une réintégration conditionnée à un contrôle à réception. Un article revenu abîmé sort du stock vendable au lieu d’y retourner.

  5. Je fais descendre le prix au niveau de la combinaison

    Les fins de série se pilotent par déclinaison : une specific_price ciblant un id_product_attribute permet de solder les tailles qui restent sans brader celles qui partent au prix fort. Une remise posée sur le produit entier détruit la marge sur les tailles centrales.

Les pages liées aux déclinaisons

Questions fréquentes

Faut-il masquer les tailles épuisées ?
Non. Masquer une taille laisse croire que le modèle entier a disparu et fait partir le visiteur. J’affiche toutes les tailles, je marque visuellement celles qui manquent et je propose une alerte de retour en stock, qui renseigne au passage sur la demande réelle.
À partir de combien de combinaisons un catalogue devient-il lourd ?
Il n’y a pas de seuil universel : ce qui compte est le nombre de modèles multiplié par le nombre de variantes, et la façon dont le thème interroge la base. Quelques centaines de modèles dépassent couramment la dizaine de milliers de lignes de combinaisons, ce qui suffit à ralentir le back-office bien avant la vitrine.
Peut-on gérer un échange de taille sans repasser commande ?
Pas nativement. PrestaShop, WooCommerce et Shopify savent rembourser ou émettre un avoir, pas échanger. L’échange se développe : demande typée, réservation de la taille de remplacement, contrôle à réception, puis réexpédition. C’est un flux, pas une case à cocher.
Où doit vivre le guide des tailles ?
Dans les données produit, pas dans une image du pied de page. Les correspondances FR/UK/US/IT changent d’une marque et parfois d’une coupe à l’autre ; les rattacher au produit permet de les traduire, de les indexer et de les corriger sans retoucher un fichier graphique.
Comment solder une seule taille en fin de série ?
En posant la remise sur la combinaison. Dans PrestaShop, une specific_price peut cibler un id_product_attribute précis ; la même logique existe ailleurs sous d’autres noms. Une remise posée au niveau du produit s’applique à toutes les tailles, y compris celles qui se vendent encore très bien.

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

De quel type de développement s’agit-il ?
Partez-vous de zéro ou faut-il faire évoluer un existant ?

Reprendre un code existant non maîtrisé demande souvent un audit avant même de commencer à développer.

Une stack technique est-elle imposée ? (facultatif)
Combien de personnes utiliseront l’outil ? (facultatif)
Quelle est votre échéance ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.