Silverstripe обнаружит язык и перенаправит на дом - PullRequest
0 голосов
/ 26 марта 2020

На моем клиентском сайте с использованием silverstripe 3 я пытаюсь установить sh перенаправление домашней страницы на основе языка пользователя.

Я впервые работаю с этой cms, поэтому получил информацию об изменении в папке mysite\code\pages файла с именем StartPage.php со следующим кодом

class StartPage_Controller extends Page_Controller {

   public function init() {
      parent::init();

      $ip = $_SERVER['REMOTE_ADDR'];
      $data = json_decode(file_get_contents('http://freegeoip.net/json/' . $ip));

      if ($data->country_code == 'PL') {
         $this->redirect('pl/start', 301);
      } else {
         $this->redirect('en/home', 301);
      }
    }
   }
}

Это дало результатов нет и сайт по-прежнему перенаправлен на /en/home, поэтому я попытался в любом случае принудительно выполнить перенаправление, оставив только $this->redirect('pl/start', 301); По-прежнему никаких результатов.

Поэтому, отключив его, я отредактировал _config.php файл и добавил эти строки вверху

$currentpage = $_SERVER['REQUEST_URI'];

if ($currentpage == '/' or $currentpage =='') {

  $lc = ""; // Initialize the language code variable
  if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
      $lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  }
  if($lc == "pl"){
      header("location: /pl");
      exit();
  }
  if ($lc == 'de') {
      header("location: /de");
    exit(  );
  }
  else{
      header("location: /en");
  }  
}

Это работает несколько хорошо, например, на chrome рабочем столе язык перенаправлен правильно, но на мобильных chrome и Firefox он все еще перенаправлен на Engli sh стр.

...