2012-06-26 98 views
2

我想改變一個PHP文件的包含路徑與JavaScript,如果用戶更改網站的語言。我正在使用此代碼來檢查網站的語言是否爲英語。更改php包括路徑與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'; ?> 

include函數來

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

是否有人知道如何使這項工作?或者我必須檢查路徑名與PHP更改PHP包括功能?

+0

PHP運行服務器端,它的JavaScript開始之前完成了,反正我不明白爲什麼你需要的JS的話,那都可以用php完成 – 2012-06-26 09:19:03

+0

你不能用javascript來改變包含路徑。 – jedwards

+0

當這個Javascript代碼被調用時,PHP完成了工作。您必須重新加載您的網站並使用參數。 – Amberlamps

回答

0

我相當確定這是不可能的,因爲PHP在發送給客戶端之前生成標記。另一個解決方案是使用JavaScript重新加載頁面,並在URL中包含某種參數,然後告訴PHP哪些內容包含要使用的標記。

1

您不能僅使用JavaScript來更改PHP中的變量。但你可以做一件事。通過向服務器發起請求,您可以在<select>標記的值發生更改時使用AJAX查詢。

$("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'); 
} 

此代碼假定您的網址將在形式http://www.mydomain.com/en/some/page.php

編輯:

由於這個代碼運行裏面的WordPress,$_SERVER['REQUEST_URI ]不返回語言部分。多虧了OP,做在WordPress的方法是:

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

這個答案真的很有道理。 –

+0

@SalmanA謝謝:) –

+0

@AleksG即使對我來說,這個答案也很有道理。但是由於我使用的是可讀固定鏈接的Wordpress,所以$ uri與兩種語言都是一樣的。當我回應$ uri時。有沒有不同的解決方案,REQUEST_URI?由於$ uri是在/ en/ – linzprod