atornier Posted June 4, 2012 Share Posted June 4, 2012 (edited) [Résolu !! voir 2 POST plus Bas] --------------------------------------------- Bonjour a tous, j'ai deux questions : Existe t'il une variable "origine du pays" du visiteur, sur prestashop ? Afin de pouvoir utiliser cette variable pour afficher ou non des informations.. j'ai cherché, et recherché et rien trouvé. Dans l'idéal j'aimerai connaitre le pays de connexion, sans que l'utilisateur soit déja logué. (J'ai le module de geolocalisation activé.) Merci d'avance !! De plus j'ai lu sur une info de release de la beta 1.4 de prestashop... qu'il y avait une fonction de blocage de la devise en fonction du pays du visiteur...http://www.prestasho...est_disponible/ impossible de trouver ce reglage dans ma version 1.4.7.3 cette fonction a t'elle disparue depuis? Cordialement. Edited June 4, 2012 by atornier (see edit history) Link to comment Share on other sites More sharing options...
atornier Posted June 4, 2012 Author Share Posted June 4, 2012 up!! please Link to comment Share on other sites More sharing options...
atornier Posted June 4, 2012 Author Share Posted June 4, 2012 (edited) Bon ben... je me répond à moi même... mais je pense que ça pourra servir a de nombreuses personnes, vu les messages déja postés. Pour utiliser la géolocalisation , voici le script (compatible prestashop 1.4.x.x) à incorporer dans les pages php où vous souhaitez géolocaliser !! <?php /* chemins pour acceder aux fichiers de geolocalisation installé par prestashop */ require(dirname(__FILE__).'/config/config.inc.php'); include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); include_once(_PS_GEOIP_DIR_.'geoipregionvars.php'); if (file_exists(_PS_GEOIP_DIR_.'GeoLiteCity.dat')) /*execution du script si la base de donnée de localisation est bien présente... */ $ipvisiteur = $_SERVER['REMOTE_ADDR']; /* recuperation IP visiteur */ $gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); // ouverture de la base gratuite de maxmind */ $code = geoip_country_code_by_addr($gi, $ipvisiteur); /* recuperation ISO pays */ $pays = geoip_country_name_by_addr($gi, $ipvisiteur); /* recuperation Nom du pays */ geoip_close($gi); /* fermeture de la base gratuite de maxmind */ echo $code,' - ',$pays; /* affichage ! */ ?> A vous d'utiliser le résultat les variables codes et pays, pour par exemple afficher ou masquer un message, effectuer une action.. A+ EDIT du 05/06/2012 autre solution encore plus intégrée à prestashop : Dans le fichier /classes/Frontcontroller.php vous trouverez la fonction : protected function geolocationManagement() dans cette fonction completez la ligne : global $cookie, $smarty; par global $cookie, $smarty,$codepaysuser,$nompaysuser; Puis après la ligne $record = geoip_record_by_addr($gi, Tools::getRemoteAddr()); ajoutez les lignes $codepaysuser = geoip_country_code_by_addr($gi, Tools::getRemoteAddr()); /* recuperation ISO pays */ $nompaysuser = geoip_country_name_by_addr($gi, Tools::getRemoteAddr()); /* recuperation Nom du pays */ $smarty->assign('codepaysuser', $codepaysuser); $smarty->assign('nompaysuser', $nompaysuser); Et voilà, vous avez maintenant de disponible pour toutes vos pages prestashop, les deux variables globales : codepaysuser qui vous donne le pays en ISO : ex : FR nompaysuser qui vous donne le pays au complet : ex : FRANCE Pour les utiliser dans un .tpl par exemple : dans un des DIV du tpl : pour afficher le pays : Your country : {$nompaysuser} ou pour faire un test sur le code pays : {If ($codepaysuser=='US')} <-- mettre ici le code a executer si condition vraie --> {else} <-- mettre ici le code a executer si condition fausse --> {/if} Edited June 5, 2012 by atornier (see edit history) Link to comment Share on other sites More sharing options...
d_borgniet Posted July 9, 2012 Share Posted July 9, 2012 Est-ce normal que cette méthode ne fonctionne pas sous Prestashop 1.4.7.3 ? Mes variables passées dans le tpl (ex. header.tpl) sont vides (ou ne passent pas). Une solution ? Link to comment Share on other sites More sharing options...
Vinosensis Posted July 5, 2013 Share Posted July 5, 2013 Excelente solution! Avez-vous un exemple similaire pour la version 1.5.4? Je n'ai pas trouvé la variable global $cookie, $smarty; Merci Link to comment Share on other sites More sharing options...
julien325cab Posted October 25, 2013 Share Posted October 25, 2013 Je déterre un peu le sujet mais j'ai effectué les modifications données sur PS 1.5.5 et cela ne fonctionne malheureusement pas, le test suivant entre autre ne donne aucune valeur : Your country : {$nompaysuser} Je souhaite simplement arriver à afficher sur ma page d’accueil un message personnalisé pour les utilisateurs belges bien évidemment avant qu'ils n'aient créé un compte, c'est pourquoi je m'intéressait à cette fonction. Si quelqu’un a réussi à faire fonctionner ce code ou a une idée je suis preneur Merci ! Link to comment Share on other sites More sharing options...
SPKF Posted November 7, 2013 Share Posted November 7, 2013 up up up Link to comment Share on other sites More sharing options...
redtango2 Posted January 23, 2014 Share Posted January 23, 2014 Pas de nouvelles pour 1.5.6 ? Link to comment Share on other sites More sharing options...
xtaze Posted October 8, 2014 Share Posted October 8, 2014 Merci pour le partage, ça marche parfaitement sur 1.6 par rapport au code, il suffit d'initialiser la variable $gi avant la condition car on ne rentre pas tjs dedans : protected function geolocationManagement($default_country) { //surcharge de la méthode pour avoir sur tout le site l'adresse du pays de l'utilisateur global $codeCountryUser,$nameCountryUser,$smarty; if (!in_array($_SERVER['SERVER_NAME'], array('localhost', '127.0.0.1'))) { /* Check if Maxmind Database exists */ if (file_exists(_PS_GEOIP_DIR_.'GeoLiteCity.dat')) { include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); $gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); /*MODIFICATIONS*/ $codeCountryUser = geoip_country_code_by_addr($gi, Tools::getRemoteAddr()); /* recuperation ISO pays */ $nameCountryUser = geoip_country_name_by_addr($gi, Tools::getRemoteAddr()); /* recuperation Nom du pays */ $smarty->assign('codeCountryUser', $codeCountryUser); $smarty->assign('nameCountryUser', $nameCountryUser); /* fin des modifications*/ if (!isset($this->context->cookie->iso_code_country) || (isset($this->context->cookie->iso_code_country) && !in_array(strtoupper($this->context->cookie->iso_code_country), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))))) { $record = geoip_record_by_addr($gi, Tools::getRemoteAddr()); if (is_object($record)) { if (!in_array(strtoupper($record->country_code), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))) && !FrontController::isInWhitelistForGeolocation()) { a+ Link to comment Share on other sites More sharing options...
ledmounting Posted April 13, 2015 Share Posted April 13, 2015 Bonjour j'ai un petit soucis J'ai bien ajouté la langue française (car je ne sais pourquoi mon prestashop était en anglais) Je me retrouve face à deux soucis: 1- Dans le back office (coordonnés et magasin) ainsi que sur le front-office ( à l'enregistrement client ) j'entre le pays france et prestashop me dit "Une adresse localisée dans un pays contenant des états doit sélectionner un état" 2- soucis les modules n'ont pas tous pris la langue française et qu'en j'essai la traduction de module prestashop me dit :"Attention, votre hébergement utilise le patch de sécurité Suhosin pour PHP, qui limite le nombre maximal de champs autorisés dans un formulaire400 pour suhosin.post.max_vars. 400 pour suhosin.request.max_vars.Veuillez contacter votre hébergeur pour augmenter la limite de Suhosin à au moins 931, ou vous devrez modifier les fichiers de traduction." Je suis chez hostpapa auriez vous des solutions à mes deux soucis que je puisse régler moi même dans un délai bref ? Merci d'avance m Coordonnées et magasins Coordonnées et magasins Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now