Tutoriel

Attribution dynamique de groupe client à l’inscription sur Prestashop

Dans certains cas, il peut être utile d’attribuer automatiquement un groupe client à un utilisateur dès son inscription, en fonction de critères personnalisés. Cela permet par exemple de distinguer des clients B2B, B2C ou d’adapter les remises et accès selon la civilité. Ce tutoriel montre comment réaliser cette attribution dynamique de groupe client grâce à une surcharge de la classe Customer.

1. Objectif : attribuer un groupe client selon la civilité

PrestaShop attribue par défaut le groupe “Clients” (ID 3) à chaque nouvel utilisateur. Mais vous pouvez adapter cette logique pour qu’un client soit automatiquement ajouté à un groupe différent selon sa civilité :

  • Monsieur → Groupe “Homme”
  • Madame → Groupe “Femme”

Nous allons faire cela proprement via une override de la classe Customer, sans modifier le cœur de PrestaShop.

2. Créer la surcharge de la classe Customer

Créez le fichier suivant :

/override/classes/Customer.php

Ajoutez ensuite votre code d’attribution dynamique. Exemple :

/override/classes/Customer.php
<?php

/**
 * Override PrestaShop 8/9 : assignation automatique d’un groupe selon le genre.
 *
 * Objectif :
 *  - Si le client est un homme (id_gender = 1), on lui ajoute le groupe “Hommes” (id 5)
 *  - Si le client est une femme (id_gender = 2), on lui ajoute le groupe “Femmes” (id 6)
 *
 * Le groupe par défaut n’est pas modifié.
 * On utilise uniquement les méthodes du Core (aucune requête SQL directe).
 */
class Customer extends CustomerCore
{
    public function add($autodate = true, $null_values = false)
    {
        // Étape 1 : création normale du client
        $success = parent::add($autodate, $null_values);
        if (!$success) {
            return false;
        }

        // Étape 2 : déterminer le groupe à ajouter selon le genre
        $groupIdToAdd = null;

        if ((int)$this->id_gender === 1) {
            // Homme → Groupe “Hommes”
            $groupIdToAdd = 5;
        } elseif ((int)$this->id_gender === 2) {
            // Femme → Groupe “Femmes”
            $groupIdToAdd = 6;
        }

        // Si aucun genre défini, on ne fait rien
        if (!$groupIdToAdd) {
            return true;
        }

        try {
            // Récupère les groupes actuels du client
            $currentGroups = $this->getGroups();

            // Ajoute le groupe si absent
            if (!in_array($groupIdToAdd, $currentGroups, true)) {
                $updatedGroups = array_merge($currentGroups, [$groupIdToAdd]);

                // Prépare le format attendu par les associations Webservice
                $associations = array_map(static function ($id) {
                    return ['id' => (int)$id];
                }, $updatedGroups);

                // Met à jour via le Core
                $this->setWsGroups($associations);

                // 👉 Si un jour tu veux faire de ce groupe le groupe par défaut, décommente les lignes ci-dessous :
                // $this->id_default_group = (int)$groupIdToAdd;
                // $this->update();
            }
        } catch (Exception $e) {
            PrestaShopLogger::addLog(sprintf(
                '[Customer override] Impossible d’ajouter le groupe %d au client %d : %s',
                (int)$groupIdToAdd,
                (int)$this->id,
                $e->getMessage()
            ), 3);
        }

        return true;
    }
}

💡 Explications :

  • La méthode add() est surchargée : elle s’exécute à chaque création de client.
  • La condition $this->id_gender permet de déterminer la civilité choisie à l’inscription.
  • Le groupe est défini selon cette civilité (les IDs de groupe sont à adapter à votre boutique).
  • Le groupe est ensuite enregistré comme groupe par défaut et ajouté à la table d’association customer_group.

3. Adapter les ID de groupes

Pour connaître l’ID de chaque groupe :

  1. Allez dans le back office → Clients → Groupes.
  2. L’ID du groupe est dans la première colonne du tableau.

Ensuite, remplacez les valeurs dans la surcharge :

case 1: $groupIdToAdd = 5; // Homme
case 2: $groupIdToAdd = 6; // Femme

4. Vider le cache et régénérer les surcharges

Pour activer la surcharge :

  1. Rendez-vous dans Paramètres avancés → Performances.
  2. Cliquez sur Vider le cache.

Ensuite, créez un nouveau compte client depuis le front-office pour tester le comportement.

5. Tester le fonctionnement

Lorsqu’un nouvel utilisateur s’inscrit :

  • Si la civilité “Monsieur” est sélectionnée → le client rejoint le groupe “Homme”.
  • Si la civilité “Madame” est sélectionnée → le client rejoint le groupe “Femme”.

Vous pouvez vérifier dans le back-office (fiche client) que le groupe par défaut correspond bien à celui attribué par votre logique.

6. Personnaliser davantage la logique

Cette approche peut être adaptée pour d’autres besoins :

  • Attribuer un groupe selon le pays choisi à l’inscription.
  • Attribuer un groupe selon le nom de domaine e-mail (B2B/B2C).
  • Appliquer automatiquement un programme de fidélité à certains groupes.

7. Bonnes pratiques

  • Ne modifiez jamais directement CustomerCore.
  • Travaillez toujours dans /override/classes/Customer.php.
  • Testez sur un environnement de préproduction avant mise en ligne.
  • Conservez une sauvegarde avant toute mise à jour de PrestaShop.

Conclusion

Grâce à cette surcharge de la classe Customer, vous pouvez automatiser l’attribution des groupes clients dès l’inscription, selon la civilité ou tout autre critère personnalisé. Cette méthode propre et efficace permet de segmenter automatiquement vos utilisateurs, de simplifier vos campagnes marketing et d’adapter vos tarifs ou promotions dès le premier contact client.

Bonus

Pour aller plus loin

🚀 Vous voulez aller plus loin techniquement ? Nos formations avancées PrestaShop vous donnent les clés pour développer des boutiques performantes.

Besoin d’un hébergement vraiment pensé pour PrestaShop ?

Nous travaillons avec 772424 — la référence française de l’hébergement e-commerce spécialisé, avec déjà +1200 boutiques PrestaShop accompagnées.

Besoin d'un expert ?

Bloqué à cette étape ? Faites appel à un expert certifié PrestaShop et avancez sereinement.

Chargement...