2014-03-24 79 views
1

我有一個單頁風格的頁面,其中頂部導航鏈接鏈接到具有平滑滾動效果的同一頁面內的錨點。在多個頁面上平滑滾動導航

的問題是,同樣的資產淨值片段在其他內部網頁的使用,所以我想知道:

如何創建要去一尋呼機的條件,如果當前頁面不是一個-pager。

這就是我到目前爲止,也許閱讀代碼可以更容易理解我想實現的目標。

<ul id="main_menu"> 
<li><a href="#start">Start</a></li> 
<li><a href="#overview">Overview</a></li> 
<li><a href="#gift">Make a Gift</a></li> 
<li><a href="#activities">Activities</a></li> 
<li><a href="#resources">Resources</a></li> 
</ul> 

此作品在其中sample.com/start

我的主頁正常,但如果我在讓我們說sample.com/overview,當我點擊「資源」上的主菜單鏈接,我應該帶回sample.com/start#resources而不是sample.com/overview#resources

任何想法?

+1

就始終把完整的URL。如果不需要,它將不會更改頁面。 –

+0

或者你可以在'../ start#resources'中輸入href –

回答

0

在您的開始頁面上,請按照原樣使用您的代碼,並在其他頁面上將start#resources放入您的網址,而不是#resources

+0

正確,但問題是我無法在其他頁面中更改該菜單,菜單的代碼在頁面中必須完全相同。 – user3389286

+0

您可以在服務器端代碼中使用if來檢查您是否位於起始頁面。如果是這樣,您使用問題中顯示的代碼。否則,您使用我的答案中建議的代碼。通常在所有頁面上都有相同的菜單,並且用if來處理小小的細微差別。我的答案是建議在創建可重複使用的模板時使用有條件的方法,這是我的一般方法。 –

0
<li><a href=" 
       <?php if(!strpos($_SERVER['SCRIPT_NAME'], 'start.php')): ?> 
        start.php 
       <?php endif;?> 
       #start">Start</a> 
    </li> 
    <li><a href=" 
       <?php if(!strpos($_SERVER['SCRIPT_NAME'], 'start.php')): ?> 
        start.php 
       <?php endif;?> 
       #overview">Overview</a> 
    </li> 

    <!-- etc.. --> 

此檢查,如果當前頁面是start.php:如果是這樣,什麼都不做;如果不是,則在#anchor之前將start.php添加到href屬性中。

我已經這樣縮進以便更容易閱讀和理解正在發生的事情,但實際上您會想要取出href屬性中的縮進,因爲空格會導致產生的url %20 s。

相關問題:

If index.php, show "this", if not, show "this"

How can I echo HTML in PHP?

另外:

http://php.net/manual/en/language.basic-syntax.phpmode.php