2012-06-26 4 views
2

Я пытаюсь изменить путь включения файла php с помощью javascript, если пользователь меняет язык веб-сайта.Изменение php include path с помощью javascript

Я использую этот код, чтобы проверить, является ли язык веб-сайта английским или нет.

<script type="text/javascript"> 
     $(function() { 
      var pathname = window.location.pathname; 
      if (pathname.search('/en/') != -1){ 
       //I wanna insert the new path here 
      } 
     }); 
    </script> 

А потом я хочу изменить функцию включения от

<?php include 'navigation.php'; ?> 

в

<?php include 'navigation_en.php'; ?> 

Кто-нибудь знает, как сделать эту работу? Или мне нужно проверить имя пути с помощью php, чтобы изменить функцию включения php?

+0

PHP работает на стороне сервера, его закончили перед началом яваскрипта, во всяком случае я не понимаю, почему вам нужен JS вообще, все это может сделайте с помощью php –

+0

Вы не можете изменить путь включения с помощью javascript. – jedwards

+0

Когда вызывается код Javascript, PHP работает. Вы должны перезагрузить свой сайт и работать с параметрами. – Amberlamps

ответ

0

Я уверен, что это невозможно, поскольку PHP генерирует разметку до ее отправки клиенту. Другим решением было бы перезагрузить страницу с помощью JavaScript и включить в URL какой-то параметр, который затем сообщает PHP, который включает тег для использования.

1

Вы не можете использовать только один JavaScript для изменения переменных в PHP. Но вы можете сделать одно. Вы можете использовать AJAX Queries, когда изменяется значение тега <select>, отправив запрос на сервер.

$("select.language").change(function(){ 
    $.ajax({ 
     url: 'changeLang.php?lang=' + $(this).val(), 
     success: function(data) { 
      alert("Successfully set the language to " + data); 
     } 
    }); 
}); 

В бэкенд PHP код, вы можете сделать так:

if(isset($_GET["lang"])) 
    // Set the lang. 
    die("English"); 
3

Вы не можете сделать это с чистым JavaScript, поскольку Javascript выполняется после завершает обработку PHP. Вы можете сделать то же самое с чистой PHP, хотя:

$uri = $_SERVER['REQUEST_URI']; 
if(preg_match('/^\/en\//', $uri)) { 
    include_once('include_en.php'); 
} 
else { 
    include_once('include.php'); 
} 

Этот код предполагает, что ваш URL, будет в форме http://www.mydomain.com/en/some/page.php

EDIT:

Как этот код работает внутри WordPress, $_SERVER['REQUEST_URI ] не возвращает часть языка. Благодаря ОП, как сделать это в WordPress будет:

$lang = get_bloginfo('language'); 
if(preg_match('/^\/en-/', $lang)) { 
    include_once('include_en.php'); 
} 
else { 
    include_once('include.php'); 
} 
+0

Этот ответ _actually_ имеет смысл. –

+0

@SalmanA спасибо :) –

+0

@AleksG Этот ответ имеет смысл даже для меня. Но так как я использую Wordpress с удобочитаемыми постоянными значениями, $ uri одинаковый с обоими языками. Когда я повторяю $ uri. Есть ли другое решение, которое REQUEST_URI? Поскольку $ uri начинается после/en/ – linzprod

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