PrestaCatégories V6 active le turbo. Comment créer 5000 catégories en 2 min
Pour cette mise à jour majeure de PrestaCatégories, presque toutes les requètes SQL et de traitement de masse ont été ré-écrites avec en tête un seul objectif, l'optimisation sans compromis pour vous permettre de gagner encore plus de temps, beaucoup de temps. Jugez plutôt...
Le lancement
Si sur les petites bases de moins de 500 catégories cette étape était indolore, ceux qui gèrent des sites de 5000 voir 50 000 catégories devaient attendre de longues minutes pour que l'arborescence complète soit lue et affichée. A présent seul le premier niveau de l'arborescence est chargé au lancement, les autres niveaux le sont au fur et à mesure des besoins de l'utilisateur.
Mais même sur les toutes petites bases, vous apprécierez le confort de pouvoir rafraîchir l'arbre des catégories en quelques secondes.
Test grandeur nature, connexion sur un site de 40 000 catégories :
Le mode de fonctionnement permettant cette rapidité de lancement et toutes les autres accélérations décrites ci dessous est appelé "Chargement progressif".
On le choisit au moment de la connexion et peut être modifié depuis l'interface principale à tout moment :
Cochez "Choisir mode de lecture" pour ouvrir cette fenêtre et choisir ce nouveau mode ou l'ancien (conservé pour les anciennes versions 1.3 de PrestaShop):
Une fois connecté, vous pouvez passer d'un mode à l'autre (restez si possible toujours dans le nouveau mode) :
Egalement dans le panneau latéral, vous trouverez un autre paramétrage important :
Ne décochez cette option que si vous êtes certain de travailler seul sur les catégories pendant votre session. Si d'autres personnes ou vous même utilisent le back office ou une autre instance de PrestaCatégories, laissez cette option cochée.
Dans le cas contraire, vous pouvez la décocher pour accélérer encore plus le logiciel.
Activation et désactivation d'une série de catégories :
Vous le faîtes souvent sur un grand nombre de catégories à la fois, alors on a vraiment poussé l'optimisation au maximum pour que vous soyez encore plus performant.
Test d'activation de 10 000 catégories (au fait avec PrestaShop, si on devait le faire une par une il faudrait 3 mois) :
Suppression de catégories :
Test sur 1000 catégories à supprimer en un clic :
C'est même tellement rapide que cela devenait dangereux. Alors en plus de la demande de confirmation, on a ajouté un compteur vous indiquant avant la suppression le nombre total de catégories qui vont être supprimées (en incluant toutes les sous-catégories invisibles). Et pour éviter que vous cliquiez une seconde fois si vous n'avez pas vu le sablier tourner quelques centièmes de seconde, on a aussi ajouté un message furtif texte, vous indiquant la fin de l'opération de suppression.
Création d'un très grand nombre de sous-catégories, dans une multitude de catégories :
Pour la plupart d'entre vous, PrestaCatégories c'est d'abord un outil pour créer rapidement l'arborescence. Alors il faut que cela soit performant (rapide) et pratique.
1er axe d'amélioration, la vitesse. Exemple créer 10 000 catégories dans une énorme base qui en contient déjà 100 000 (oui oui cent milles, PrestaCatégories gère cela les doigts dans le nez à présent !):
2ieme axe d'amélioration, le côté pratique.
Voici la nouvelle interface de création en masse de catégories, avec formulaire pemettant de pré-remplir le nom des catégories, leur url, leur meta titre, avec le nom du site, le nom de leur parente, des champs texte libres, l'identifiant. Permet aussi de pré-définir si elles doivent être activées ou pas et à quelles boutiques les associer. Ainsi que de choisir ou pas de les associer à tous les groupes de clients :
Le nom et l'url peuvent concaténer jusqu'à six éléments, trois totalement libres et le nom de la boutique, celui de la catégorie parente et l'identifiant.
Duplication de branches de catégories
Sans doute une des fonctions les plus pratiques et utilisées quand on doit créer une arborescence avec une structure répétitive, typiquement les sites de vente de pièces détachées pour voitures. Il fallait donc la aussi qu'elle soit très rapide.
Résultat d'un test réél de clonage d'un ensemble de branches contenant plus de 1000 catégories sur 4 niveaux :
A noter également, le nouveau script inclut à présent la duplication des remises appliquées aux catégories en fonction du groupe de clients.
Déplacement en masse des catégories
Peut être la fonction qui a subi le plus fort taux d'accéleration par rapport à la version précédente. Cette fois on ne pourra pas faire mieux.
Exemple, déplacement de deux branches de 1000 catégories sur 5 niveaux :
Association des catégories aux boutiques
Possibilité un peu moins connue, PrestaCatégories permet aussi d'associer (ou retirer) en un clic des centaines de catégories à une boutique. La aussi un travail sur le code a permis un gain en vitesse appréciable.
Exemple, lier 600 catégories sur 4 niveaux (englobant les sous-catégories) à une nouvelle boutique vide :
Association croisée entre catégories et groupes de clients
Un gros point faible de PrestaShop. Qui ne s'est pas déjà retrouvé avec des centaines de catégories à lier une par une après avoir créé un nouveau groupe de clients. Peut être ne le savez vous pas, mais PrestaCatégories permet aussi de faire ces associations croisées et multiples en quelques sélections et un clic.
Le script était déjà assez rapide, mais on l'a tout de même optimisé comme tout le reste.
Exemple concret, activer 3 groupes de clients dans 1000 nouvelles familles de produits :
Le traitement des produits n'a pas été oublié. Commençons par l'action la plus courante, l'activation et désactivation de masse
En fait il devient quasiment impossible de faire la différence entre l'activation de 100 ou de 1000 produits, dans les deux cas cela est à présent presque instantané. Exemple pour 1000 produits :
Déplacement (changement de catégorie par défaut) de l'ensemble (ou juste une partie) des produits d'une sélection de catégories (ou de branches entières avec le mode récursif), vers une catégorie cible.
Il faut à présent là aussi quelques secondes au lieu de plusieurs minutes pour déplacer des milliers de produits.
Exemple pour environ 4000 produits répartis dans un millier de catégories diverses, déplacés en un clic dans une nouvelle catégorie vide:
De plus vous trouverez une nouvelle fenêtre permettant d'enchaîner les déplacements sans devoir re-choisir les options de visibilité. Et l'ajout de filtres permettant de limiter le choix des produits déplacés (actifs ou pas, avec ou sans images, de tel ou tel fournisseur,...) :
A noter que pour respecter le comportement de PrestaShop, il n'est plus possible de dé-associer un produit de sa catégorie par défaut.
Suppression de produits
Quoi de plus pénible que d'attendre lorsque l'on souhaite "simplement" supprimer définitivement des centaines ou milliers de produits. Il faut pourtant savoir que c'est un processus complexe, car il faut que le script fasse le ménage correctement dans toutes les tables de la base contenant des infos sur ces produits supprimés. Dans Prestashop, c'est plus de 15 requêtes SQL par produit qu'il faut enchaîner.
Alors on a revu l'approche technique, pour que tout soit fait en moins de 10 requêtes, quel que soit le nombre de produits à supprimer.
Le résultat est radical. Là ou il faudrait 15 jours de travail avec le back office, voici ce que ça donne dans PrestaCatégories pour supprimer 12 000 produits :
Comme pour les catégories, la gestion de l'association des produits aux diverses boutiques a aussi été boosté
Pratique lorsque l'on a ajouté une nouvelle boutique et que l'on a oublié par exemple de demander à PrestaShop de récupérer les produits d'une ancienne boutique.
Transfert de 2000 produits d'une boutique dans une autre boutique :
Re-distribuer les produits dans diverses catégories devient un plaisir
Lorsque l'on ré-organise sa boutique, par exemple en période de solde pour rendre visible des milliers de produits dans une catégorie "soldes", on est souvent pris par le temps. Alors posséder un outil de traitement de masse hyper rapide peut faire toute la différence avec la concurrence.
Sitolog a donc porté une attention toute particulière à ces traitements de transfert des produits entre catégories, pour les rendre fluides, même sur un très grand nombre d'articles et de familles.
Le résultat est bluffant, par exemple rendre visibles 500 produits dans 5 familles, soit 2500 associations à réaliser :
Réparation automatique des bases de données instables ou corrompues
Le nouveau mode "Chargement progressif" tire sa puissance et sa vitesse de l'utilisation du fil d'Ariane. Si ce dernier est faux pour certaines catégories, les fonctions mentionnées ci-dessus ne donneront pas le résultat escompté.
D'autre part il ne se passe pas une semaine sans que l'on ne doive aider un utilisateur de Prestashop qui a cassé sa base avec un module tiers ou suite à une importation ratée depuis PrestaShop. Il s'agit souvent de catégories devenues orphelines (rattachées à aucune catégorie parente existente) ou de la présence de plusieurs catégories "Root" ou encore de produits devenus invisibles.
Pour ces diverses raisons, Sitolog a inclus dans PrestaCatégories V6, un ensemble d'outils de réparation automatique, dont voici la fenêtre de gestion :
On a essayé de penser à tous les cas possibles que l'on a déjà rencontrés, pour y apporter une solution. Mais il est possible que cette boîte à outil s'enrichisse encore de nouvelles fonctions complémentaires à l'avenir. D'ors et déjà, est inclus :
Concernant les catégories :
-Nettoyer les tables contenant des infos de catégories nulles.
-Corriger les doublons de catégorie "Racine" (id_category =0 ET nleft=1).
-Réparer les catégories orphelines (lorsque id_parent = 0, autres que la catégorie racine).
-Réparer les niveaux (lorsque le niveau d'une sous-catégorie est différent de celui de sa parente + 1).
-Reconstruire les valeurs nleft et nright du fil d'Ariane.
-Vérifier que les catégories sont bien associées à leur boutique par défaut, sinon les associer.
-Vérifier que lorsqu'une catégorie est associée à une boutique, ses catégories parentes le sont aussi, sinon les associer.
-Vérifier que lorsqu'une catégorie est associée à une boutique, elle possède bien un nom et une url réécrite dans la base pour cette boutique et toutes les langues. Sinon la nommer et créer une url.
-Supprimer les trous et les doublons dans l'ordre (positions) des catégories.
Concernant les produits:
-Supprimer dans toutes les tables gérant les produits les lignes avec id_product nul ou égal à 0.
-Réparer les produits orphelins (sans catégorie par défaut définie ou existante).
-Vérifier que les produits sont bien associés à leur boutique par défaut, sinon les associer.
-Supprimer les associations incorrectes entre produits et catégories.
-Vérifier que les produits sont bien associées à leur catégorie par défaut, sinon les associer.
-Supprimer les trous et les doublons dans l'ordre (positions) des produits.
Nous avons trouvé sur Presta Addons des modules vendus plus cher que PrestaCatégories, et qui ne proposent rien d'autre que une ou deux des possibilités offertes par ce nouvel outil. Ne serait-ce que pour cet outil, le coût d'une mise à jour sera amorti.
Il peut être lancé depuis la fenêtre de connexion (utile si la base est dans un tel état que la connexion échoue) et depuis la fenêtre principale.
A noter également, certains des scripts de réparation de cette liste sont exécutés automatiquement par PrestaCatégories lors de son utilisation. Par exemple la reconstruction dynamique du fil d'Ariane ou la suppression des doublons et trous dans les valeurs de positions des catégories et des produits.
Modification de l'ordre d'affichage des produits en boutique et dans l'admin
Le bouton "123" bien que très pratique pour ordonner une sélection de produits d'un clic, n'était pas très intuitif. On a donc décidé de le remplacer par une interface de type "pas à pas".
De plus, vous nous l'aviez souvent demandé, on a donc ajouté la possibilité d'ordonner les produits par simple glisser déposer (drag and drop) :
Chaque étape possède son propre guide qu'il suffit de suivre :
Pour ne pas que les catégories soient jalouses, elles aussi peuvent dorénavant être ré-ordonnées en masse par un simple glisser déposer
Autres nouveautés en vrac...
Jauge de progression ou compteur sur actions longues comme clonage et création de masse de nouvelles catégories. |
Enclenchement automatique du mode de connexion FTP "Actif" quand "Passif" n'est pas coché. |
Quatrième choix d'ordre d'affichage, par nleft croissant. Cela permet de vérifier qu'il n'y ait pas de trou dans la séquence de nleft et nrigth |
Comme dans le BO de PrestaShop, un produit est à présent obligatoirement associé à sa catégorie par défaut. On ne peut choisir une catégorie par défaut que parmi la liste de catégories déjà associées au produit. On ne peut le déassocier sans changer d'abord de catégorie par défaut. |
Lecture branche à droite ou gauche, synchro automatique entre arbres |
Nouvelle case à cocher pour basculer entre les modes d'affichage des produits groupés par catégorie par défaut ou groupés par catégories associées. Ce choix devient donc indépendant de l'inclusion dans la table de la colonne "Catégories associées" contenant la liste des Ids de celles-ci. De plus l'ajout de la colonne "position" active automatiquement ce mode pour une modification plus intuitive de l'ordre des produits. |
Calcul auto de la position des autres produits quand on modifie la position de l'un deux, en utilsant la nouvelle fenêtre de ré-ordonnancement. |
Double clic ligne categorie => lecture récursive de la branche. De plus selection récursive si option parent-enfant est sur oui(bonhommes verts) Simple clic ligne catégories => selection simple ou récursive selon option Clic sur le + => déroulé des sous catégories déjà lues uniquement |
Nouvelle option qui permet de dé-associer automatiquement les sous catégories quand on dé-associe une catégorie d'une boutique. |
Nouvelle colonne permettant de définir une (ou plusieurs d'un coup) catégorie comme étant ou pas de type "racine" |
Double clic bouton dérouler, déroule tout avec lecture complete base. Simple clic : déroule uniquement branche déjà lues |
Loupe de recherche de type "contient" au lieu de "commence par", dans toutes les tables |
Bugs de la version précédente corrigés
Erreurs SQL (doublon) lors du clonage de plusieurs branches de catégories |
V 7.0.0.e et f : manque colonnes shops dans arbre catégories !!! |
Relire categories apres changement choix shop (ps1541), avec select all enfoncé, sélectionne la dernière ligne vide => crash si on agit dessus (comme suppression par exemple) |
Augmenter hauteur séparateurs dans table produits et centrer textes en hauteur |
Filtres de la fenêtre d'activation en masse de tous les produits d'une sélection de catégories ne fonctionnent pas dans tous les cas. |
Bouton drapeaux de la table des traduction fait disparaitre les autres boutons de l'onglet, ne devraient donc pas être visibles au début. Et il en reste un. |
PS 1.3, impossible de changer valeur id_parent des categories |
Modification de "position" ne sauve que dans boutique 1, alors que l'on est en mono selection de boutique 2 (16100), quand le mode sauver dans toutes les botuiques est à 1 |
Bug de récupération des noms de dossiers contenant un accent dans la fenêtre d'ajout de photos à la liste par choix et recherche d'un dossier. Accent é donne des caractères Windows mal codés et de ce fait la recherche des images ne se fait pas ensuite. |
PrestaShop n'oblige pas a ce qu'une catégorie soit associée à sa boutique par défaut => modification de PC en conséquence |
PrestaShop ne force pas la désassociation des catégories enfants à la boutique quand on déassocie la catégorie parente de cette shop => choix optionel dans PC. |
Association des produits aux boutiques, correction de l'oubli de dupliquer l'association aux transporteurs. Correction d'autres erreurs concernant la gestion du multi boutiques (par exemple quantité partagées entre boutique) |
Erreur SQL lors de la dé-association de groupes de clients à des catégories, concernant la suppression des lignes dans la table group reduction. |
Voila, il nous reste à vous souhaitez beaucoup de plaisir renouvelé avec un produit ludique et rapide. N'hésitez pas à nous faire remonter vos premières impressions.
Franck Bugnet - Sitolog