2013-12-09 3 views
0

Мне нужно работать с кодом страны посетителя в product.tpl. Есть ли глобальная переменная prestashop с кодом страны, которую я могу использовать в шаблоне smarty? Если нет, то где я могу добавить его?Geoip in prestashop smarty template

ответ

1

Для этого сначала перейдите в Preferences>>Geolocation и включить его также загрузить файл .dat

после этого добавьте этот код в controllers >> front >> ProductController.php перед строкой 238

include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); 
$gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); 
$record = geoip_record_by_addr($gi, Tools::getRemoteAddr()); 

добавить этот код в Smarty назначать вокруг линии 260

'country_name' => $record->country_name //change country_name to code etc 

Использование $country_name в product.tpl, где когда-либо вы хотите :)

испытания в пс-1.5.6

0

Я использовал @ код Раза, чтобы построить его в качестве замещающего к FrontController с целью не только отображать его в product.tpl но всех цеховых страниц:

  1. в переназначения> классы контроллера>> создать файл FrontController.php
  2. положить следующий код

    class FrontController extends FrontControllerCore 
    { 
        public function initContent() 
        { 
        parent::initContent(); 
    
        include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); 
        $gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); 
        $record = geoip_record_by_addr($gi, Tools::getRemoteAddr()); 
    
        $this->context->smarty->assign('country_name', $record->country_name); //change country_name to code etc 
    
        } 
    } 
    

@Raza: используя {$ country_name} в .tpl-файле, всегда отображается название страны на английском языке. Любая идея, как использовать основные переводы PS в страну на активном языке магазина?

благодаря

0

@nortonOn: Вы можете попробовать с id_lang из печенья, таким образом, он должен отображать название страны на языке магазина. должны выглядеть следующим образом: $country->name[intval($this->context->cookie->id_lang)];

Я надеюсь, что это поможет :)

Смежные вопросы