2011-11-03 10 views
5

Na wszystkich stronach oprócz strony kontaktowej chcę, aby wyświetlała następujące elementy w włączeniu inc-header.php.Jeśli ta strona pokazuje tę inną opcję To

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

Na stronie contact.php, chcę to pokazać:

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

To powinno być możliwe prawidłowe?

+0

dlaczego nie uwzględnić wspólnego menu zawiera wszystkie linki do każdego pliku? posiadanie właśnie "domowego" łącza jest sposobem na przestarzałą praktykę zeszłego wieku. –

Odpowiedz

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, ale OP nie wspomina, czy strona jest plikiem o nazwie 'contact.php'. Może na podstawie adresu URL jest lepszy? –

+0

Dziękuję za wszystkie informacje zwrotne, ten powyżej wykonał zadanie. Dzięki! :) – 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

Na moim serwerze, musi to być porównane do "/contact.php", ponieważ zawiera ono wiodący slash. Nie jestem pewien, czy jest to serwer, czy nie. – nickb

1

szybki i brudny rozwiązaniem jest:

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

W inc_header.php:

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

A gdzie ustawisz wartość '$ current_page'? – Nico

+0

w contact.php! (zakładając, że contact.php jest plikiem, w którym ładowana jest strona kontaktowa i umieszczana jest instrukcja inc_header.php) – giorgio

3

Jest zmienna globalna o nazwie $_SERVER['PHP_SELF'] który zawiera nazwę swojej stronie obecnie wymagane. W połączeniu z basename() to powinno działać:

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

Można zrobić to z prostego if, ale to działa tylko na stronie kontaktowej. Można również skorzystać z prostej funkcji w pliku inc-nagłówka, który będzie działać tak:

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>'; 
} 

To coś w rodzaju tępego podejście z punktu widzenia projektowania, ale można użyć LinkToPageOrHome('page.php', 'My Page'); w wielu szablonów i nie martwić się o link do strony.

Powiązane problemy