1

URL にハッシュを動的に追加しています - その strpos を取得し、その変数に基づいて特定のフッターを表示しようとしています。ページ全体を翻訳できることはわかっていますが、クライアントに対してこれを行う必要があります。なぜ機能しないのですか質問だと思いますか?

URL はhttp://www.example.com/#/sp/のようになります

これが私のヘッダーです:

<?php 
    $page = $_SERVER['REQUEST_URI'];
    $isSpanish = strpos($page, '/sp/'); 
    $isSpanishDynamic = strpos('#/sp/', $page);

これが私のフッターです:

   <?php if($isSpanishDynamic !== FALSE || $isSpanish !== FALSE) { ?>
                    <li><a href="/">PÁGINA DE INICIO</a></li>
                    <li><a href="/sp/our-story">HISTORIA</a></li>
                    <li><a href="/sp/menu">MENÚ</a></li>
                    <li><a href="/sp/contact">CONTACTO US</a></li>
                    <li><a href="/sp/order-online">ORDENE POR INTERNET</a></li>
    <?php } else { ?>
                    <li><a href="/">Home</a></li>
                    <li><a href="/en/our-story">Our Story</a></li>
                    <li><a href="/en/our-menu">Our Menu</a></li>
                    <li><a href="/en/contact">Contact Us</a></li>
                    <li><a href="/en/order">Order Online</a></li>
    <?php } ?>  
4

2 に答える 2

2

のような URLhttp://example.com/#/sp/では、ハッシュ#/sp/がサーバーに送信されることはないため、何らかの方法でサーバーとやり取りしない限り、PHP では何もできません。

ウィキペディアを参照してください:

フラグメント識別子は、残りの URI とは異なる機能を果たします。つまり、その処理は、サーバーからの参加なしにクライアント側のみで行われます。エージェント (Web ブラウザーなど) が Web サーバーからリソースを要求すると、エージェントは URI をサーバーに送信しますが、フラグメントは送信しません。代わりに、エージェントはサーバーがリソースを送信するのを待ってから、フラグメント値に従ってリソースを処理します。最も一般的なケースでは、エージェントはフラグメント値と等しい属性文字列を持つアンカー要素まで Web ページを下にスクロールします。他のクライアントの動作が可能です

于 2012-06-22T00:49:03.740 に答える
1

artlung が指摘しているように、ハッシュはサーバーに送信されません。他にもいくつかの方法がありますが、クエリ文字列はおそらく次に簡単に実装できます。の代わりに、 (完全な URL: http://example.com/?lang=sp/#/sp/ )のクエリ パラメータを追加できます。/?lang=sp

次に、PHP スクリプトで、次のコードを使用して確認できます。

if ( isset($_GET['lang']) && $_GET['lang'] == 'sp' )
于 2012-06-22T00:53:24.893 に答える