Comment segmenter vos clients via des groupes dans PrestaShop 1.7 ?

PrestaShop
  • Accueil
  • Blog
  • Comment segmenter vos clients via des groupes dans PrestaShop 1.7 ?

Tous vos clients n’ont pas les mêmes goûts et les mêmes attentes. C’est pour cela qu’il faut segmenter vos clients ! Voyons donc comment segmenter vos clients avec des groupes dans PrestaShop 1.7.

Comment créer et gérer les groupes clients dans PrestaShop 1.7 ?

PrestaShop 1.7 comme les anciennes versions du logiciel e-commerce garde la fonction “groupes clients” ce qui peut être très pratiques dans certaines situations comme celles-ci :

  • je veux afficher un prix HT pour certains clients
  • je veux autoriser l’accès à une catégorie seulement pour certains clients
  • je veux segmenter ma base client pour prévoir une opération
  • je veux créer une réduction ciblée pour un groupe de clients
  • je veux afficher un module seulement pour certains clients

Voici comment créer un groupe client et comment l’administrer dans PrestaShop 1.7, tout se passe dans le back office > Paramètres de la boutique > Clients > onglet “Groupes”.

segmentation-groupe-client-prestashop-17
utilisez les groupes clients pour mieux cibler les attentes clients !

 

segmentation-groupe-client-prestashop-17-1
Offrez simplement un avantage à vos meilleurs clients !

 

segmentation-groupe-client-prestashop-17-2
Utilisez à fond PrestaShop pour une satisfaction client accrue !

 

Comment choisir l’accès d’une catégorie pour un groupe client ?

Comment gérer l’accès d’une catégorie pour un ou plusieurs groupes clients dans PrestaShop 1.7 ?
C’est assez simple puisque c’est une fonction de base de PrestaShop. Rendez-vous dans le back office > Catalogue > Catégories > choisissez une catégorie> éditez les groupes ayant l’accès.

segmentation-groupe-client-prestashop-17-4
créez une boutique privée en quelques clics !

 

Comment afficher un élément spécifique pour un groupe client ?

Après avoir survolé les fonctions de base de PrestaShop 1.7, on va se pencher sur un cas précis : afficher un élément pour un groupe client.

Quand je parle d’élément, ça peut être un onglet de menu, un message, le bloc message cadeau, le numéro de téléphone, etc. Vous avez compris l’idée !

Pour cela, il faut d’abord récupérer les groupes clients du visiteur / client concerné.

Créez le fichier override/classes/controller/FrontController.php en modifiant la fonction process() comme ceci :

public function process()
{
//On assigne la variable $cookie
global $cookie;
//On teste si le visiteur est client
if($cookie->id_customer != 0){
//On récupère la méthode pour trouver les groupes d'un client
$Cgroups = Customer::getGroupsStatic($cookie->id_customer);
//On teste chaque résultat du tableau
foreach($Cgroups as $Cgroup){
//Si le client appartient au groupe désiré (ici le groupe 4)
if ($Cgroup == 4){
//On créé la variable smarty qui servira de test
$this->context->smarty->assign(array(
'groupe_teste' => '1',
));
//On stoppe la boucle, plus besoin de continuer
break;
}
}
}
}

Pensez à bien vider le cache et supprimer le fichier var/cache/prod/class_index.php ou var/cache/dev/class_index.php.
Vous pouvez à présent utiliser la condition suivante pour afficher ou non un élément dans un template de votre thème ou de vos modules :

{if $groupe_teste}
<p>Élément affiché si le client appartient au groupe client.</p>
{/if}

Dans cet exemple, seuls les clients appartenant au groupe client ID = 4 peuvent voir le paragraphe.

Comment améliorer les performances de PrestaShop avec les groupes clients ?

C’est plutôt l’inverse en fait.
Si malgré tout vous n’utilisez pas les groupes clients : désactivez-les !
La fonction groupes clients demande de la ressource et une option simple et rapide s’offre à vous.
Rendez-vous dans le back office > Paramètres avancés > Performances > décochez l’option “Groupes de clients”.

segmentation-groupe-client-prestashop-17-3
Améliorer la vitesse de PrestaShop en 1 clic !

 

Comment afficher le groupe dans son compte client avec PrestaShop ?

Voici un tutoriel assez rapide pour ajouter le nom du groupe client par défaut dans le compte client.

Le tuto pour afficher la variable se décompose en 2 étapes.

Étape 1 : créez le fichier override/controllers/front/MyAccountController.php en modifiant la fonction initContent() comme ceci pour récupérer le nom du groupe client par défaut :

class MyAccountController extends MyAccountControllerCore
{
public function initContent()
{
global $cookie;
if($cookie->id_customer > 0){
$customerIdDefaultGroup = Customer::getDefaultGroupId((int)$cookie->id_customer);
$customerDefaultGroup = new Group((int)$customerIdDefaultGroup);
$this->context->smarty->assign(array(
'customerDefaultGroupName' => $customerDefaultGroup->name[$cookie->id_lang],
));
}
parent::initContent();
}
}

Étape 2 : modifiez le fichier /themes/votre-theme/templates/customer/my-account.tpl pour afficher la variable dans la page du compte client :

{extends file='customer/page.tpl'}

{block name='pageWrapperClass'}{/block}
{block name='pageHeaderClass'}{/block}
{block name='pageContentClass'}{/block}
{block name='pageFooterClass'}{/block}

{block name='page_title'}
{l s='Your account' d='Shop.Theme.Customeraccount'}
{/block}

{block name='page_content'}
<div class="row">
<div class="col-xs-12">
<p>{l s='Vous faites partie du groupe client :' d='Shop.Theme.Customeraccount'} {$customerDefaultGroupName}</p>
</div>
</div>
<div class="row account-links">

<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="identity-link" href="{$urls.pages.identity}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Information' d='Shop.Theme.Customeraccount'}
</span>
</a>

{if $customer.addresses|count}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="addresses-link" href="{$urls.pages.addresses}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Addresses' d='Shop.Theme.Customeraccount'}
</span>
</a>
{else}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="address-link" href="{$urls.pages.address}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Add first address' d='Shop.Theme.Customeraccount'}
</span>
</a>
{/if}

{if !$configuration.is_catalog}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="history-link" href="{$urls.pages.history}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Order history and details' d='Shop.Theme.Customeraccount'}
</span>
</a>
{/if}

{if !$configuration.is_catalog}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="order-slips-link" href="{$urls.pages.order_slip}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Credit slips' d='Shop.Theme.Customeraccount'}
</span>
</a>
{/if}

{if $configuration.voucher_enabled && !$configuration.is_catalog}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="discounts-link" href="{$urls.pages.discount}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Vouchers' d='Shop.Theme.Customeraccount'}
</span>
</a>
{/if}

{if $configuration.return_enabled && !$configuration.is_catalog}
<a class="col-lg-4 col-md-6 col-sm-6 col-12" id="returns-link" href="{$urls.pages.order_follow}">
<span class="link-item">
<i class="material-icons"></i>
{l s='Merchandise returns' d='Shop.Theme.Customeraccount'}
</span>
</a>
{/if}

{block name='display_customer_account'}
{hook h='displayCustomerAccount'}
{/block}

</div>
{/block}


{block name='page_footer'}
{block name='my_account_links'}
<div class="text-sm-center">
<a href="{$logout_url}" >
{l s='Sign out' d='Shop.Theme.Actions'}
</a>
</div>
{/block}
{/block}

Vous notez la variable smarty {$customerDefaultGroupName} ajouté dans le début du fichier 😉

Et voilà c’est terminé et vous avez aussi accès à toutes les informations du groupe client par défaut concerné.

Comment segmenter mes clients dans les anciennes versions de PrestaShop ?

J’ai rédigé un article concernant les groupes clients dans PrestaShop 1.4 ce qui vous permet d’assurer le support de boutiques vieillissantes : Segmentez vos clients avec un override groupe client prestashop

16 commentaires sur “Comment segmenter vos clients via des groupes dans PrestaShop 1.7 ?

  1. Merci pour votre message.

    Malheureusement je n’ai toujours pas le groupe client d’afficher sur le profil de mon client…

    Peut être une erreur de ma part lorsque vous dites à la fin : “Vous notez la variable smarty {$customerDefaultGroupName} ajouté dans le début du fichier 😉”

    Merci beaucoup pour vos tuto et ressources !

    1. Bonjour Jules,
      Vérifiez bien que vous avez suivi les étapes notamment d’avoir ajouté la variable dans le fichier .tpl du compte client.
      Bon courage 😉

  2. Bonjour ! Bon je commence à abandonner, je n’y arrive pas, même apres pleins de méthodes sur différents forum :
    Je souhaite que le client puisse avoir d’afficher son groupe sur son profile sur le site.

    Je fais exactement comme toi, mais ça ne me marque rien.
    Quand je supprime le fichier class_index.php, il revient sans cesse, le problème vient peut être de là, je ne sais pas.

    Merci de me sauver !

  3. Bonjour,
    Merci pour cet article très clair et utile quand on débute…
    J’ai créé un groupe de client “CLUB” qui permet d’accéder à des tarifs et remises privilégiés. Cela fonctionne mais je cherche maintenant une solution pour que ces clients accèdent à ce groupe et donc à ces offres privilégiées en tapant un code promo que je leur donne en amont. Est-ce possible ?
    Merci par avance pour votre réponse

    1. Bonjour Stéphanie,
      C’est possible et c’est un développement sur-mesure ici 😉

  4. Salut,

    Merci pour ton site, Il y à plein d’informations très utilise lorsqu’on souhaite personnaliser un peu sa boutique.

    Pour ma part je cherche une solution pour créer un nouveau groupe de client pour restreindre les modes de paiement disponibles.

    Sur presta on à donc 3 groupes par défaut
    – Visiteur : (Toutes les personnes sans compte client ou non connectées.)
    – Invité : (Clients ayant passé une commande avec la commande express (guest checkout).)
    – Client : (Le groupe défini pour vos clients enregistrés et identifiés.)

    Mais est-il possible de créer un groupe “Client actif” ?
    Ce serait un groupe des clients enregistrés, identifiés mais aussi ayant passé au moins une commande.

    Je souhaiterais afficher certains modes de paiement uniquement pour les clients ayant déjà fait au moins 1 commande.

    Merci pour ta réponse.

    Cordialement

    1. Bonjour Ulrich,
      Merci pour le retour, ça fait plaisir 🙂
      Pour créer un groupe de clients dans PrestaShop c’est le chapitre 1.
      Par défaut, ça n’est pas possible automatiquement.
      Cependant, tu peux créer ce groupe puis ajouter les clients dedans si ils ont commandé.
      Ce module fait le job https://parg.co/bm5S.
      Sinon c’est une requête sql qu’il faut lancer dans PHPmyadmin 😉

  5. Bonjour Arnaud,

    Merci beaucoup pour ce tuto ! C’est limpide et cela marche très bien pour ma part.
    Je souhaite également me servir de ce code pour afficher des mentions suivant la règle de taxe active.

    Est ce qu’il y aurait une également une méthode static qui permet de récupérer cela ?
    Merci

    Roland

    1. Bonjour Roland,
      Je ne pense pas de tête car c’est la raison qui m’avait poussé à réaliser ce tuto 😉

  6. Désolé, je laisse encore un commentaire,… Simplement pour indiquer que je n’ai malheureusement pas reussi a faire marcher le script.
    Par contre, la variable {$customer.id_default_group} existe par défaut dans la section mon compte, je peux donc l’utiliser sans faire d’override. Merci quand même pour l’article, j’espere que d’autre arriverons à le mettre en oeuvre.

  7. Bonjour,
    Merci pour cet article, cela repondait complétement à mon interrogation du moment. Mais l’application ne fonctionne pas :
    J’ai fait la création de l’override avec l’integration de la function process() indiqué.
    J’ai juste modifié le groupe 4 par le groupe 11 qui correspond au groupe voulu.
    Lors de l’ajout de la condition dans le tpl souhaité ( pour moi my-account) cela ne fonctionne pas.
    J’ai essayé d’afficher simplement {groupe_teste} pour voir si la variable contenait bien 1 mais cela n’affiche rien.
    Prestashop 1.7.5 dans mon cas.
    Une idée ?
    Merci.

    1. Bonjour Mathieu,
      Difficile à dire, je penche pour un cache à vider et le fichier class_index.php à supprimer déjà.

  8. Bonjour,
    Malgré ma rigueur, je n’arrive pas à mettre en place override pour afficher un bloc spécifique.
    J’ai seulement changé la condition des groupe client en mettant != pour le groupe spécifique car je souhaite que tout les groupe sauf un voient la div.. mais ça ne marche pas. Faut-il charger seulement la fonction process dans l’override ou bien tout le fichier frontcontroller modifié ?

    1. Bonjour Mathieu, il faut créer l’override et modifier la fonction comme indiqué.

Laisser un avis

Consultez les autres articles