[php][css] Dynamiczna zmiana klasy odnośnika menu

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
piaskun
Posty: 1
Rejestracja: czw maja 27, 2010 10:49 am

[php][css] Dynamiczna zmiana klasy odnośnika menu

Post autor: piaskun »

Witam,
dopiero zaczynam swoją przygodę z PHP.

Jak zmienić klasę odnośnika w menu strony, w zależności od strony, na której obecnie jestem?
Menu strony chcę umieszczać za pomocą funkcji include(). Na razie jest to html i np. menu strony index.html wygląda tak:

Kod: Zaznacz cały

<li><a class="biezacy" href="index.html">Strona główna</a></li>
<li><a class="menu" href="sadzonki.html">Sadzonki</a></li>
<li><a class="menu" href=onas.html>O nas</a></li>
<li><a class="menu" href=kontakt.html>Kontakt</a></li>
I teraz po otwarciu strony sadzonki - to właśnie jej odnośnik powinien mieć klasę "biezacy", a pozostałe - "menu".
Jak to zrobić?

Z góry dzięki za pomoc!

pozdrawiam,
piaskun
lllukasz
Posty: 3
Rejestracja: czw cze 17, 2010 3:30 pm

Re: [php][css] Dynamiczna zmiana klasy odnośnika menu

Post autor: lllukasz »

No jak chcesz to zrobić za pomocą PHP, to samo menu też możesz przy okazji zrobić :)

Plik menu.php:

Kod: Zaznacz cały

<?php
function poka_menu ($obecny_adres){ // definicja funkcji

// ponizej konfiguracja naszego menu w postaci tablicy PHP

$menu_linki = array (
0 => array ('link' => 'glowna',   'href' => 'index.html'),
1 => array ('link' => 'sadzonki', 'href' => 'sadzonki.html'),
2 => array ('link' => 'onas',     'href' => 'onas.html'),
3 => array ('link' => 'kontakt',  'href' => 'kontakt.html')
);

$menu = '<ul>';

for ($a = 0; $a < count ($menu_linki); $a++){ 
   // linijka ponizej sprawdza czy podany adres to ten o ktory nam chodzi i ustawia odpowiednią klase
   if ($menu_linki[$a]['href'] == $obecny_adres) $klasa = "biezacy"; else $klasa = "menu";

   $menu .= '<li><a class="'.$klasa.'" href="'.$menu_linki[$a]['href'].'">'.$menu_linki[$a]['link'].'</a></li>';
}

$menu .= '</ul>';

return $menu;

}
?>
Na każdej podstronie (glowna/sadzonki/o nas/itd) includujesz sobie plik menu.php
A potem wywołujesz funkcję z tego pliku -> poka_menu podając jako parametr
nazwe podstrony na której jesteś. Tak żeby się pokrywała z nazwami
które są w tablicy na początku pliku menu.php.

Kod: Zaznacz cały

<?php
echo $menu = poka_menu ('glowna');
?>
Zamiast glowna podstawiasz nazwe podstrony w ktorej jestes.
ODPOWIEDZ