Jump to content
paul_moustique

Afficher image si group = 4

Recommended Posts

Bonjour,

 

Je voudrais afficher une image sur mon template que si le compte appartient au groupe id=4

 

J'ai essayé plein de choses mais sans succès.

 

{if $id_attribute_group == 4}

{if $id_group == 4}

....

 

Connaissez-vous la variable à utiliser pour ça?

 

Merci par avance.

Share this post


Link to post
Share on other sites

En fait, par défaut, le header ne récupère pas le groupe du client. Pour cela, il faut aller le chercher !

 

Dans le fichier classes/frontcontroller.php

 

Tu vas à:

public function displayHeader()
{

 

Ensuite tu rajoutes ce code:

// Vérification si le client appartient au groupe ID 4
 global $cookie;
 //On commence par vérifier que le client est connecté
 if(isset($cookie->id_customer))
  {
// On récupère les groupes du client
$groups=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'customer_group where id_customer='.$cookie->id_customer);
// On liste chaque ligne du tableau
foreach ($groups as $group)
 {
  // On teste si le client appratient au groupe 4
  if($group['id_group']==4)
   {
	// Oui => On assigne la variable groupe4 et on lui donne la valeur 1
	self::$smarty->assign('groupe4',1);
	// Plus de raison de continuer, on stoppe
	break;
   }
 }
  }

 

Ce code permet de récupérer les groupes du client connecté et de tester si il appartient au groupe 4.

 

Côté header.tpl, tu mets le code suivant:

{if $logged}
{if isset($groupe4) and $groupe4==1}
	Le client appartient au groupe 4 
{else}
	Ce client n'appartient pas au groupe 4 
{/if}
{else}
Client non connecté !
{/if}

 

Ce code teste déjà si le client est connecté et ensuite affiche deux messages différents suivant que la variable groupe4 existe ou non.

 

Testé sur 1.4.8.2

Edited by franckm1000 (see edit history)

Share this post


Link to post
Share on other sites

Alors là. Je ne sais pas comment te remercier.

 

C'est vraiment super sympa d'avoir pris de ton temps pour m'expliquer tout ça.

 

Mille merci! Je vais tester ça dès demain matin.

 

Très bon week end toi.

Share this post


Link to post
Share on other sites

Bonjour, j'ai un problème avec les groupes et le module à facette, j'ai un affichage différent dans product-list.tpl suivant le groupe, avec ton code tous fonctionnent très bien à l'affichage, en revanche dès que l'on utilise un filtre, l'affichage ne reconnait plus le groupe, peux tu éclairer ma lanterne ...

 

Merci d'avance.

Share this post


Link to post
Share on other sites

en revanche dès que l'on utilise un filtre, l'affichage ne reconnait plus le groupe

 

C'est quoi un filtre exactement ?

Share this post


Link to post
Share on other sites

Le module à facette (blocklayered), permet de choisir, pour une recherche avancée, par le biais de select ou checkbox des caractéristiques attributs ...

Ce que j'appelle filtrer, c'est le résultat après avoir sélectionné un de ces éléments, résultat en ajax qui se fout des conditions de groupes placées dans product-list.tpl.

 

Cordialement

Share this post


Link to post
Share on other sites

En fait, par défaut, le header ne récupère pas le groupe du client. Pour cela, il faut aller le chercher !

 

Dans le fichier classes/frontcontroller.php

 

Tu vas à:

public function displayHeader()
{

 

Ensuite tu rajoutes ce code:

// Vérification si le client appartient au groupe ID 4
 global $cookie;
 //On commence par vérifier que le client est connecté
 if(isset($cookie->id_customer))
  {
// On récupère les groupes du client
$groups=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'customer_group where id_customer='.$cookie->id_customer);
// On liste chaque ligne du tableau
foreach ($groups as $group)
 {
  // On teste si le client appratient au groupe 4
  if($group['id_group']==4)
   {
	// Oui => On assigne la variable groupe4 et on lui donne la valeur 1
	self::$smarty->assign('groupe4',1);
	// Plus de raison de continuer, on stoppe
	break;
   }
 }
  }

 

Ce code permet de récupérer les groupes du client connecté et de tester si il appartient au groupe 4.

 

Côté header.tpl, tu mets le code suivant:

{if $logged}
{if isset($groupe4) and $groupe4==1}
	Le client appartient au groupe 4 
{else}
	Ce client n'appartient pas au groupe 4 
{/if}
{else}
Client non connecté !
{/if}

 

Ce code teste déjà si le client est connecté et ensuite affiche deux messages différents suivant que la variable groupe4 existe ou non.

 

Testé sur 1.4.8.2

 

 

Hi franckm1000

excuse my for not speaking French. Do let me know if you understand my post, though.

Does your above solution work on PS 1.3.6 as well?

 

 

I use PS 1.3.6 and i would like to display a specific text message when a customer from the Group X (not conditioned by his/her name of his/her customer id) is logged in.

 

I tried the following combinations:

 

{if $logged}

{if isset($id_group) and $id_group==3}

<p class="warning"> Show this message 1 </p>

{else}

<p class="warning"> Show message 2 </p>

{/if}

{/if}

 

This option does not work ok and it displays the text in the {else} condition only.

 

I tried as well

 

{if $logged}

{if (self::$cookie->id_customer)}

{$customer = new Customer(intval($this->id_customer));

$customer->getGroups()}

{if ($customer_group==3)}

<p class="warning"> Show message 1 </p>

{else}

<p> Show message 2 </p>

{/if}

{/if}

{/if}

 

This code disables the body of the page completely.

 

Any tips on how to code it correctly?

 

Again, this is about showing a specific text message to a customer, depending on the group he's in (as set in the back office), independent of the name of the customer or the customer id.

version PS 1.3.6

Share this post


Link to post
Share on other sites

The second one, it's normal you use (self::$cookie->...) Smarty does not regnize self:: who is specific for PHP.

 

The question is: where do you want to apply this message (what page: product, home, all pages...) ?

Share this post


Link to post
Share on other sites

The second one, it's normal you use (self::$cookie->...) Smarty does not regnize self:: who is specific for PHP.

 

The question is: where do you want to apply this message (what page: product, home, all pages...) ?

 

The message must be displayed on when the customer is logged, on their page with the cart overview, account info and addresses.

However, as i said in the previous post, that specific formula disables the body of the page, so if active, you get to see the header/top of the page only.

Edited by marco989 (see edit history)

Share this post


Link to post
Share on other sites

Got it.

Here is the solution in case anyone wants to add whatever message on the customer's account page, addresses page or whatever page, by performing a conditional

check according to the group to which the customer belongs (verified on PS 1.3.6)

 

Add on the my-account.tpl or whichever tpl you want, where you want the message to appear, the following code:

 

<div>

 

{if ($logged)}

{ $customer = new Customer($cookie->id_customer);

if (!$customer->isMemberOfGroup(3));}

<p class="warning"> Show message 1 </p>

{else}

<p> Show message 2 </p>

{/if}

 

</div>

 

 

The above checks the condition id_group id_customer and isMemberofGroup and displays the corresponding warning or message.

 

Tags: if condition $id_group $id_customer ismemeberofgroup

 

Partial credits go to rocky for his post;

http://www.prestashop.com/forums/index.php?/topic/39431-php-help-needed-hide-everythingshop-until-a-user-logs-in/page__view__findpost__p__283507

Share this post


Link to post
Share on other sites

Bonjour franckm1000,

 

J'utilise Prestashop 1.4.7.0

 

Sur la page panier, je souhaiterais n'afficher le pavé "Bon de réduction" que pour les clients appartenant au groupe 2.

 

Je suppose qu'il faut modifier les fichiers classes/frontcontroller.php et shopping-cart.tpl. 

 

Sauriez vous ce que je dois modifier dans ces deux fichiers ?

 

Merci beaucoup par avance,

 

Patrick

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More