2011-12-12 6 views
12

Więc Szukałem więc na godzinę próbując znaleźć odpowiedź, a także próbowali różnych metod, including thisPHP ustawić aktywny link na stronie za pomocą obejmuje

Próbuję to moje strony wraz z nawigacją. Ale na właściwej stronie potrzebuję elementu listy, aby mieć klasę active. Nawigacja jest w header.php i aktualnie wygląda tak:

<nav> 
    <ul> 
     <li class="active"> <a href="/">Home</a> </li> 
     <li> <a href="#">Apps</a> </li> 
     <li> <a href="#">Forums</a> </li> 
    </ul> 
    </nav> 

Po pierwsze, nie mam pojęcia, czy JS (jQuery) byłoby lepiej, czy PHP miało być lepiej. Oba nie będą miały znaczenia, jeśli to zadziała.

Jestem też trochę nowy z PHP i próbuję się uczyć.

Jaka byłaby najłatwiejsza (z nadzieją) metoda użycia? Więc nie trzeba zmienić dużo kodu po prostu dać nav class="active"

+0

Jak uzyskać wartości do ustawienia aktywnej klasy na tej stronie, czy używasz zmiennej łańcuchowej zapytania, aby uzyskać identyfikator strony. coś jak ** exmaple.com? page_id = Aplikacje ** – punit

+0

Nie jestem zaawansowany w PHP ..... To naprawdę tylko statyczne strony z PHP. – nowayyy

Odpowiedz

25

Asumming masz zmienną $page (który zawiera nazwę strony, którą aktualnie Włączone):

<nav> 
    <ul> 
     <li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li> 
     <li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li> 
     <li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li> 
    </ul> 
    </nav> 
+1

Czy możesz wyjaśnić, jak wyglądałaby zmienna $ page? i czy zmienna znajdowałaby się w pliku inc lub na stronie, do której mam dołączyć nav? Naprawdę nowe w PHP tutaj. – nowayyy

+4

jeśli umieścisz ' na włączonej stronie głównej, a następnie Strona główna zostanie ustawiona jako aktywna. Nie zapomnij również skonfigurować CSS. – Prisoner

0

jeśli używasz ciągu zapytania exmaple.com?page_id=Apps, aby przekazać identyfikator strony, niż w przypadku php możesz podejść do tej rzeczy

$ page_id = $ _REQUEST ['page_id'];

<ul> 
      <li class="<?php echo ($page_id == "Home" ? "active" : "");?>"> 
<a href="/">Home</a> 
      </li> 
      <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>"> 
<a href="#">Apps</a> 
      </li> 
      <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>"> 
<a href="#">Forums</a> 
      </li> 
     </ul> 
+0

To jest waaaay zbyt hackable :-P – Neal

+0

@neal Nie wiem, jak on otrzymuje aktualną nazwę strony, to tylko o pomysł, aby podejść. – punit

0

Na stronie użyciu nagłówka:

<?php $loc = this.location; ?> 

potem na każdym link Dodaj:

<?php(this.href == $loc) ? echo 'class="active"' : '' ?> 
8

Oto prosty sposób, gdzie nie trzeba dodawać żadnych innych zmienna

<li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>"> 
<a href="index.php">Start</a> 
</li> 
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>"> 
<a href="about.php">About</a> 
</li> 
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>"> 
<a href="practices.php">Practices</a> 
</li> 
0

Jeśli nie chcesz używać jQuery lub PHP - ca n wykonaj następująco:

  1. Podaj ID lub inną KLASĘ dla każdego elementu <li> w "your-include-nav.php".
  2. Zdefiniuj styl "aktywny" za pomocą CSS w sekcji <head> na każdej stronie.
Powiązane problemy