如果用户更改网站的语言,我正在尝试使用 javascript 更改 php 文件的包含路径。
我使用此代码来检查网站的语言是否为英语。
<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 包含函数?
你不能用纯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
编辑:
由于此代码在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');
}
你不能只使用 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");
我相当确定这是不可能的,因为 PHP 在发送到客户端之前会生成标记。另一种解决方案是使用 JavaScript 重新加载页面,并在 URL 中包含某种参数,然后告诉 PHP 要使用哪个包含标签。