Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][PHP]Aktywna zakładka PHP
Forum PHP.pl > Forum > Przedszkole
devilangel
Temat być może był poruszany już w wielu postach mimo wszystko nie mogę sobie z tym poradzić. Otóż mam plik index php w którym jest naglowek, menu, i tresc strony. Do treści strony zaincludowałem pliki php, które uruchamia się z menu więc chciałbym aby w menu były wyróżnione aktywne zakladki po zaincludowaniu treści strony. odsyłacze wyglądają następująco.
Kod
<ul id="button">

<li><a href="?id=glowna" title="Strona główna" id="current">Strona Główna</a></li>
<li><a href="?id=download" title="Download">Download</a></li>
<li><a href="?id=kontakt" title="Konakt">Kontakt</a></li>
<li><a href="?id=projekty" title="Projekty">Projekty</a></li>
<li><a href="index.php?glowna&id=kontakt" title="Konakt">Kontakt</a></li>
<li><a href="?id=allegro" title="FORUM">Allegro</a></li>
</ul>

Próbowałem już w css metodą class ale nie mogę nic zdziałać. Jeszcze staram się znaleźć coś na za granicznych stronach np.
Kod
<?php
$active[$current] = “class=aktywny”;
?>
<li <?php echo $active[1] ?>><?php if ($current != 1) { echo "<a href=\"index.php\">home</a>"; } else { echo "Glowna"; } ?></li>
<li <?php echo $active[2] ?>><?php if ($current != 2) { echo "<a href=\"?id=download\">web</a>"; } else { echo "Download"; } ?></li>

Ale coś tu nie działa. Może gdybym do każdego zaincludowanego pliku php dodał jakiś parametr, który po wczytaniu zamieniałby w menu aktywną zakładkę.
Oczywiście w pliku style.css mam dodaną klasę aktywny z odpowiednim parametrem zmieniającym.
thek
Podobną rzecz sam niedawno robiłem w menu 2-poziomowym, tyle że we frameworku. Ustaliłem sobie, że kontroler strony otrzymuje z podstron numer. W kontrolerze strony głownej tylko sprawdzałem go i ustawiałem odpoweiedn element menu na aktywny. Na czystym php po prostu ustawiałbym jakąś zmienna GET i w zależności od niej dodawałbym klasę smile.gif
  1. <ul>
  2. <li><a href="link" <?php echo ($_GET['id']==1 ? 'class="aktywna"' : ''; ) ?>>Link</a></li>
  3. <li><a href="link2" <?php echo ($_GET['id']==2 ? 'class="aktywna"' : ''; ) ?>>Link2</a></li>
  4. <li><a href="link3" <?php echo ($_GET['id']==3 ? 'class="aktywna"' : ''; ) ?>>Link3</a></li>
  5. </ul>
Coś w tyn stylu winksmiley.jpg

EDIT: Oczywiście nie musisz tego przesyłać jako GET, możesz użyć sesji czy czego chcesz. Ważne tylko by strona otrzymała właściwy numer. No i oczywiście zmienna musi być chroniona przed XSS. Ja dałem taką składnię, bo domyślam się, że to jakiś szablon a nie, że każda podstrona jest napisana w całości jako osobny plik zawierający także menu. Pewnie masz szablon strony głównej z include'owanymi plikami treści podstron.
phpion
Sprawdzone - działa:
  1. <style type="text/css">
  2. a.aktywny {
  3. font-weight: bold;
  4. }
  5. </style>
  6.  
  7. <?php
  8. $menu = array(
  9. 'glowna' => 'Strona główna',
  10. 'download' => 'Download',
  11. 'kontakt' => 'Kontakt'
  12. // ...itd
  13. );
  14.  
  15. $current = isset($_GET['id']) ? $_GET['id'] : NULL;
  16.  
  17. if (!isset($menu[$current])) {
  18. $current = 'glowna';
  19. }
  20. ?>
  21.  
  22. <ul id="button">
  23.  
  24. <?php foreach ($menu as $key => $item): ?>
  25. <li><a href="?id=<?php echo $key; ?>" title="<?php echo $item; ?>"<?php echo ($key == $current ? ' class="aktywny"' : ''); ?>><?php echo $item; ?></a></li>
  26. <?php endforeach; ?>
  27.  
  28. </ul>
devilangel
To działa CUD smile.gif a spędziłem przy tym kilka godzinek w pracy w wolnej chwili smile.gif Pozdrawiam Serdecznie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.