2011-11-03 74 views
5

在除聯繫頁面外的所有頁面上,我希望它在inc-header.php include中顯示以下內容。如果此頁面顯示此節目顯示此

<p><a href="contact.php">Contact</a></p> 

contact.php的頁面,我想讓它顯示:

<p><a href="index.php">Home</a></p> 

這應該是可能的正確嗎?

+0

爲什麼不包含一個通用菜單包含到每個文件中的所有鏈接?只有「家」的聯繫是上世紀一種過時的做法。 –

回答

16
<?php 
if (stripos($_SERVER['REQUEST_URI'], 'contact.php')){ 
    echo '<p><a href="index.php">Home</a></p>'; 
} 
else{ 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+0

+1,但是OP沒有提及該頁面是否爲名爲'contact.php'的文件。也許基於URL更好? –

+0

謝謝你所有的反饋,上面的工作就完成了。 謝謝! :) – Jezthomp

5
if ($_SERVER["SCRIPT_NAME"] == '/contact.php') { 
    echo '<p><a href="index.php">Home</a></p>'; 
} else { 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+1

在我的服務器上,這需要與'/contact.php'進行比較,因爲它包含一個前導斜槓。不確定這是否是服務器特定的。 – nickb

1

的快速和骯髒的解決方案是:

<?php 
$current_page = 'contact'; 
include('inc_header.php'); 
.... 
?> 

在inc_header.php:

<?php 
if($current_page == 'contact') { 
    // show home link 
} else { 
    // show contact link 
} 
?> 
+0

你在哪裏設置'$ current_page'的值? – Nico

+0

in contact.php! (假設contact.php是加載聯繫頁面的文件,並放置了inc_header.php包含語句) – giorgio

3

有一個名爲$_SERVER['PHP_SELF']一個全局變量包含網頁的名稱目前要求。與basename()結合這應該工作:

if(basename($_SERVER['PHP_SELF'], '.php') == 'contact') { 
    // Contact page 
} else { 
    // Some other page 
} 
0

你可以用一個簡單的if語句做到這一點,但這隻會對您的聯繫人頁面工作。你也可以使用在你INC頭文件的簡單功能,將工作像這樣:

function LinkToPageOrHome($script, $title){ 
    if (strtolower($_SERVER[ 'SCRIPT_NAME' ]) == strtolower($script)){ 
     $script = 'home.php'; 
     $title = 'Home'; 
    } 
    echo '<p><a href="' . $script. '">' . htmlentities($title) . '</a></p>'; 
} 

這有點從設計的角度來看鈍的辦法,但你可以在多個模板使用LinkToPageOrHome('page.php', 'My Page');,從不擔心有一個頁面鏈接到它自己。