Jump to content

utiliser le code postale du client dans product-list.tpl


Rdev

Recommended Posts

Bonjour tout le monde,

 

Je veux afficher les produits d'une catégorie à une zone sélectionné,

 

c'est à dire, à l'entré du site le client rentre sont code postale, si son code postale appartient à la liste des codes postaux donc les produits de la catégorie s'affichent à ce client, sinon un message d'erreur s'affiche "votre code postale n'appartient pas à la liste"

 

mon besoin comment utiliser la variable $address.postcode dans product-list.tpl

 

je veux tester si $address.postcode appartient à la liste des codes postaux les produits de la catégorie s'affichent

 

qui a une solution :) ?

Link to comment
Share on other sites

C'est peu clair votre demande !

 

Quand la personne rentre sur le site, vous voulez dire si un client arrive connecté ou si "n'importe qui" rentre ? Parce que ce n'est pas la même chose. Un client est une personne qui a un compte sur la boutique et qui peut se logger ou pas. Un visiteur est une personne quelconque.

Vous dites, la personne doit rentrer son code postal, donc vous parlez d'un visiteur ?

 

Déjà c'est quoi $address.postcode ? Ca ne veut pas dire grand chose. J'ai bien compris que voulez récupérer les valeurs du champ postcode dans la table address.

Mais si vous parlez d'un visiteur, pourquoi chercher un code postal dans la table ?

 

Ou alors vous parlez d'un client DEJA LOGGE et là il suffit de récupérer l'id_customer et d'aller interroger la table address pour y trouver le code postal.

Edited by franckm1000 (see edit history)
Link to comment
Share on other sites

oui je parle du client est déjà connecté

 

Si le code postal du client apparient à la liste qu'elle déjà créé, dons les produits de la catégorie X s'affichent, et si le code postal du client n'apparient pas à la liste les produits ne s'affichent pas.

 

donc je veux utiliser le champ code postale de la table adresse dans product-list.tpl pour tester si le code postal du client appartient à la liste ou non

 

et merci

Link to comment
Share on other sites

Alors pour cela il va falloir commencer par récupérer l'id du client connecté. Pour cela, côté php:

global $cookie:
$id_customer=$cookie->id_customer;

 

Ensuite, il faut aller chercher dans la table address la code postal pour ce client:

$postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer);

 

Il suffit d'assigner ensuite la variable smarty.

 

Donc...

 

Tu ouvres le fichier: controllers/CategoryController.php

Après:

public function process()
{

 

Tu ajoutes:

global $cookie;
 $id_customer=$cookie->id_customer;
 $postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer);
 self::$smarty->assign('postcode',$postcode);

 

Ensuite, dans ton fichier product-list.tpl tu n'as plus qu'à appeler le code postal:

{$postcode.0.postcode}

 

J'ai testé ça fonctionnait (1.4.8.2)

  • Like 2
Link to comment
Share on other sites

Parce que la requête que j'ai fait dans la base de données renvoie un tableau avec un "double" array du type:

array([0]=>array([postcode]=>75000,[city]=>paris...))

 

Donc pour appeler les éléments il faut descendre 2 niveaux dans le tableau:

premier niveau : 0

deuxième niveau: postcode

 

On aurait pu utiliser peut être une autre méthode comme getRow mais j'ai tellement l'habitude d'utiliser cette méthode et puis comme ça marche :)

 

PS: quand vous voulez connaître la forme du tableau d'une variable sous smarty utilisez:

{$postcode|print_r}

 

Utilisez également :

{debug} pour visualiser l'ensemble des variables chargées par le script de la page en cours avec leur achitecture.

Edited by franckm1000 (see edit history)
  • Like 2
Link to comment
Share on other sites

Effectivement, plutôt que de faire:

$postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer);

 

On aurait pu faire:

$postcode=Db::getInstance()->getRow('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer);

 

Et côté smarty on aurait récupéré:

{$smarty.postcode}

  • Like 1
Link to comment
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...