Una de las opciones que tenemos cuando estamos usando un sistema de multitienda en el Prestashop, es la redirección por IP según sea el País de origen del visitante, por lo que debemos añadir un modulo que se cargue al iniciar el header y que realice esa redirección.
Es importante activar y bajar los ficheros necesarios en prestashop, en el apartado de geolocalización.
Una vez tengamos esto, haremos un modulo el cual tendrá este codigo
Nada mas cargar el Hook Header
public function hookDisplayHeader() { $this->redirect(); }
y añadimos la función, recuerda cambiar dominio.com por tu dominio,
public function redirect(){ include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); $gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); $records = geoip_record_by_addr($gi, Tools::getRemoteAddr()); $URL_P = $_SERVER['REQUEST_URI']; $pais = $records->country_code; //comprobamos el pais y añadimos toda EU en una sola variable CE o EU if ($pais == 'AD' | $pais == 'AT' | $pais == 'BE' | $pais == 'BG' | $pais == 'HR' | $pais == 'CY' | $pais == 'CZ' | $pais == 'DK' | $pais == 'EE' | $pais == 'FI' | $pais == 'FR' | $pais == 'DE' | $pais == 'GR' | $pais == 'HU' | $pais == 'IS' | $pais == 'IE' | $pais == 'IT' | $pais == 'LT' | $pais == 'LU' | $pais == 'MT' | $pais == 'NL' | $pais == 'NO' | $pais == 'PL' | $pais == 'RO' | $pais == 'SK' | $pais == 'SI' | $pais == 'SE' | $pais == 'CH' | $pais == 'TR' ){ $pais = 'CE'; } // Comprobamos que el usuario que ha conectado no un un "agente" o bot, de esta manera no vamos a redirigir a // a los bots de google googlebot|AdsBot-Google|Googlebot-Image|Googlebot-News|Google-Structured-Data-Testing-Tool|pagespeed|insights| // ni a otros bots conocidos, en esta lista solo hay algunos if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/BotLink|ahoy|AlkalineBOT|anthill|appie|arale|araneo|AraybOt|ariadne|arks|ATN_Worldwide|Atomz |bbot|Bjaaland|Ukonline|borg\-bot\/0\.9|boxseabot|bspider|calif|christcrawler|CMC\/0\.01|combine|confuzzledbot|CoolBot|cosmos| Internet Cruiser Robot|cusco|cyberspyder|cydralspider|desertrealm, desert realm|digger|DIIbot|grabber|downloadexpress|DragonBot| dwcp|ecollector|ebiness|elfinbot|esculapio|esther|fastcrawler|FDSE|FELIX IDE|ESI|fido|H�m�h�kki|KIT\-Fireball|fouineur|Freecrawl| gammaSpider|gazz|gcreep|golem|googlebot|AdsBot-Google|Googlebot-Image|Googlebot-News|Google-Structured-Data-Testing-Tool|pagespeed|insights|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|iajabot|INGRID\/0\.1|Informant| InfoSpiders|inspectorwww|irobot|Iron33|JBot|jcrawler|Teoma|Jeeves|jobo|image\.kapsi\.net|KDD\-Explorer|ko_yappo_robot|label\-grabber| larbin|legs|Linkidator|linkwalker|Lockon|logo_gif_crawler|marvin|mattie|mediafox|MerzScope|NEC\-MeshExplorer|MindCrawler|udmsearch|moget| Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|sharp\-info\-agent|WebMechanic|NetScoop|newscan\-online|ObjectsSearch|Occam|Orbsearch\/1\.0| packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|Getterrobo\-Plus| Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Search\-AU|searchprocess|Senrigan|Shagseeker|sift|SimBot|Site Valet|skymob| SLCrawler\/2\.0|slurp|ESI|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|nil|suke|http:\/\/www\.sygol\.com|tach_bw|TechBOT| templeton|titin|topiclink|UdmSearch|urlck|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|crawlpaper|wapspider|WebBandit\/1\.0| webcatcher|T\-H\-U\-N\-D\-E\-R\-S\-T\-O\-N\-E|WebMoose|webquest|webreaper|webs|webspider|WebWalker|wget|winona|whowhere|wlm|WOLP|WWWC|none|XGET| Nederland\.zoek|AISearchBot|woriobot|NetSeer|Nutch/i', $_SERVER['HTTP_USER_AGENT'] ) ){ }else { // Si no es un Bot o agente conocido se redirigira segun el pais $dominiourl =$_SERVER['SERVER_NAME']; switch ($pais) { case 'ES': if ($dominiourl != 'dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'uk.dominio.com' || $dominiourl == 'usa.dominio.com') header("Location: https://dominio.com".$URL_P.""); break; case 'PT': if ($dominiourl != 'dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'uk.dominio.com || $dominiourl == 'usa.dominio.com') header("Location: https://dominio.com".$URL_P.""); break; case 'CE' : if ($dominiourl != 'ce.dominio.com' || $dominiourl == 'uk.dominio.com' || $dominiourl == 'usa.dominio.com' || $dominiourl == 'dominio.com') header("Location: https://ce.dominio.com".$URL_P.""); break; case 'US': if ($dominiourl != 'usa.dominio.com' || $dominiourl == 'uk.dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'dominio.com') header("Location: https://usa.dominio.com".$URL_P.""); break; case 'GB' : if ($dominiourl != 'uk.dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'usa.dominio.com' || $dominiourl == 'dominio.com') header("Location: https://uk.dominio.com".$URL_P.""); break; case 'AU': if ($dominiourl != 'usa.dominio.com' || $dominiourl == 'uk.dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'dominio.com') header("Location: https://usa.dominio.com".$URL_P.""); break; default : if ($dominiourl != 'usa.dominio.com' || $dominiourl == 'uk.dominio.com' || $dominiourl == 'ce.dominio.com' || $dominiourl == 'dominio.com') header("Location: https://usa.dominio.com".$URL_P.""); break; } } }