Attribute Replacer

Le module Attribute Replacer permet de remplacer facilement un attribut de produit par un autre dans PrestaShop. Il inclut également une option pour supprimer automatiquement l'ancien attribut s'il n'est plus utilisé par aucun produit. C'est un module puissant de gestion en masse, car il affecte tous les produits ayant l'ancien attribut sélectionné.


Fonctionnalités

  1. Remplacement en masse des attributs :

    • Tous les produits contenant l'ancien attribut sont mis à jour avec le nouvel attribut.

    • Cela simplifie les modifications massives sur les produits.

  2. Suppression des attributs inutilisés :

    • Après le remplacement, une option permet de supprimer automatiquement l'ancien attribut si aucun produit ne l'utilise plus.

  3. Affichage des attributs existants :

    • Un tableau clair et détaillé affiche les attributs disponibles, avec leur ID, nom et groupe pour faciliter leur sélection.

  4. Historique des actions :

    • Chaque action réalisée est enregistrée dans un fichier JSON avec les informations suivantes :

      • ID de l'ancien attribut

      • ID du nouvel attribut

      • Option de suppression

      • Date et heure de l'action


Structure du Code

Le module se compose des sections principales suivantes :

1. Méthode getContent()

Cette méthode est appelée pour afficher et gérer l'interface du module dans le back-office. Elle :

  • Récupère les valeurs soumises par le formulaire.

  • Valide les données (ancien attribut différent du nouvel attribut).

  • Appelle la méthode replaceAttribute() pour effectuer le remplacement.

  • Affiche les messages de confirmation ou d'erreur.

  • Génère le formulaire, la liste des attributs et l'historique des actions.

2. Méthode renderForm()

Cette méthode crée le formulaire pour saisir les ID des attributs.

  • Champs :

    • old_attribute : ID de l'attribut à remplacer.

    • new_attribute : ID de l'attribut de remplacement.

    • delete_old : Switch pour supprimer ou non l'ancien attribut.

Exemple d'affichage :


3. Méthode renderAttributeTable()

Cette méthode génère un tableau affichant tous les attributs existants avec les informations suivantes :

  • ID de l'attribut

  • Nom de l'attribut

  • Groupe auquel il appartient (ex. : Couleur, Taille).

Exemple de tableau :

ID

Nom

Groupe

123

Taille L

Taille

456

Rouge

Couleur

789

Acier Inoxydable

Matériau


4. Méthode replaceAttribute()

Cœur du module, cette méthode effectue l'action principale :

  • Elle met à jour la table product_attribute_combination pour remplacer les ID d'attributs.

Requête SQL utilisée :

  • Ensuite, elle appelle deleteUnusedAttribute() si l'option supprimer l'ancien attribut est activée.


5. Méthode deleteUnusedAttribute()

Cette méthode vérifie si l'ancien attribut est encore utilisé par d'autres produits. Si ce n'est pas le cas, il est supprimé.

Requête SQL pour vérifier l'utilisation :


6. Méthode logHistory()

Cette méthode enregistre chaque action dans un fichier JSON history.json :

  • Exemple de structure de log :

7. Méthode renderHistory()

Cette méthode affiche un historique des actions sous forme de liste simple pour un suivi visuel des remplacements effectués.

Exemple de rendu :


Précautions d'utilisation

  1. Sauvegardez votre base de données avant d'utiliser le module, car il effectue des modifications massives.

  2. Assurez-vous des ID : Utilisez la table des attributs fournie pour éviter toute erreur.


Exemple d'utilisation

  1. Sélectionnez l'ID de l'ancien attribut dans le tableau (ex. : 123).

  2. Entrez l'ID du nouvel attribut dans le champ (ex. : 456).

  3. Cochez l'option "Supprimer l'ancien attribut" si nécessaire.

  4. Cliquez sur Remplacer.

  5. Vérifiez l'historique pour confirmer l'action.


Conclusion

Le module Attribute Replacer est un outil indispensable pour gérer et mettre à jour efficacement les attributs de produits dans PrestaShop. Il automatise les modifications massives et simplifie le processus de suppression des attributs obsolètes tout en assurant un suivi précis via son historique.

Last updated