2012-06-22 79 views
1

我正在動態地爲網址添加一個哈希值 - 考慮該條目並嘗試顯示基於該變量的特定頁腳,我知道我可以只翻譯整個頁面,但我需要爲客戶做到這一點,爲什麼不工作我想這是一個問題?基於動態哈希URL的strpos PHP變量

的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 } ?> 

回答

2

在像http://example.com/#/sp/一個網址,哈希#/sp/將永遠不會被髮送到服務器,所以你不能在PHP中做任何事情,除非你以某種方式與服務器交互。

參見Wikipedia:比所述URI的其餘部分不同

的片段標識符的功能:即,其處理是隻客戶端沒有從服務器參與。當代理(如Web瀏覽器)從Web服務器請求資源時,代理將URI發送到服務器,但不發送片段。代理會等待服務器發送資源,然後代理會根據片段值處理資源。在最常見的情況下,代理將網頁向下滾動到具有等於片段值的屬性字符串的定位元素。其他客戶端行爲也是可能的

+0

我想這是它,但它似乎對我的動態類工作:<?PHP的echo $頁面; if($ page!=='intro'){if($ isSpanish!== FALSE){echo'sp';} else {echo'en';}}?> – iamwhitebox

+0

您可以同時加載兩個,然後顯示不同的菜單使用JavaScript?您可能還對以下網站的討論感興趣:http://webmasters.stackexchange.com/questions/403/how-should-i-structure-my-urls-for-both-seo-and-localization – artlung

1

正如artlung指出的那樣,散列永遠不會發送到服務器。還有其他一些方法可以做到這一點,查詢字符串可能是您實現的下一個最簡單的方法。而不是/#/sp/,你可以添加一個查詢參數/?lang=sp(完整的網址:http://example.com/?lang=sp)。

然後在你的PHP腳本,你可以檢查它使用下面的代碼:

if (isset($_GET['lang']) && $_GET['lang'] == 'sp')