2

ユーザーがウェブサイトの言語を変更した場合、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 で確認する必要がありますか?

4

3 に答える 3

3

PHP の処理が完了したにJavaScript が実行されるため、純粋な JavaScript ではこれを行うことはできません。ただし、純粋な 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

編集:

このコードはワードプレス内で実行されるため、$_SERVER['REQUEST_URI] は言語部分を返しません。OPのおかげで、ワードプレスでそれを行う方法は次のようになります。

$lang = get_bloginfo('language');
if(preg_match('/^\/en-/', $lang)) {
    include_once('include_en.php');
}
else {
    include_once('include.php');
}
于 2012-06-26T09:21:27.747 に答える
1

JavaScript だけを使用して PHP の変数を変更することはできません。しかし、できることは 1 つあります。<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");
于 2012-06-26T09:20:45.793 に答える
0

PHP はクライアントに送信される前にマークアップを生成するため、これは不可能であると確信しています。もう 1 つの解決策は、JavaScript でページをリロードし、URL に何らかのパラメーターを含めて、使用するタグを PHP に伝えることです。

于 2012-06-26T09:20:07.167 に答える