Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodanie klasy activ do aktywnej obenie podstrony menu
Forum PHP.pl > Forum > Przedszkole
Poczatkujacy_Web
Witam,


Chciałbym do mojej strony includować plik w którym znajduje się menu np.

menu.php - w któym znajduje się kod menu przykład:

<div id="menu">
<ul>
<li><a href="index.php"> HOME</a></li>
<li><a href="kontakt.php"> KONTAKT</a></li>
<li><a href="cos.php"> COŚ</a></li>
</ul>
</div>

teraz moje pytanie jak zrobić aby php dodawało clase activ do elementu li aktywnej aktualnie podstrony?
kropamk
wyślij $_GET i odbierz go w jakiejś pętli aby dodać klasę odpowiednią wink.gif
Poczatkujacy_Web
Cytat(kropamk @ 9.03.2014, 22:14:40 ) *
wyślij $_GET i odbierz go w jakiejś pętli aby dodać klasę odpowiednią wink.gif


wiesz co nie jestem zbyt dobry w php, uczę się go powoli i mozolnie, gdybyś mógł mi jakoś bardziej pomóc to byłbym wdzięczny.
rad11
Mi sie wydaje ze takie rzeczy jak aktywny link to bedzie lepiej Ci wykonac poprzez np jquery:

active

kropamk
a jak ktoś wyłączy js na stronie smile.gif ?

nie podoba mi się do końca Twój sposób ładowania/wyświetlania menu ale jeżeli już tak musisz i trzymając się mojego sposobu to po prostu do kadej pozycji li Twojego menu dodaj w linku wartość get i sprawdzaj aby dodać klasę np.

  1. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME</a></li>
rad11
Kto w dzisiejszych czasach ma wylaczony js smile.gif
kropamk
developer, roboty i inne psuje, które chcą Ci rozwalić stronę wink.gif jak robisz formularz to robisz tylko walidacje js? Czy też php wink.gif ale każdy może mieć swoje zdanie, ja nie polecam tworzyć menu na jquery wink.gif
Poczatkujacy_Web
Cytat(kropamk @ 9.03.2014, 22:30:20 ) *
a jak ktoś wyłączy js na stronie smile.gif ?

nie podoba mi się do końca Twój sposób ładowania/wyświetlania menu ale jeżeli już tak musisz i trzymając się mojego sposobu to po prostu do kadej pozycji li Twojego menu dodaj w linku wartość get i sprawdzaj aby dodać klasę np.

  1. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME</a></li>



dodałem to do elementów mojego menu zawartego w header.php przykład:

  1. <nav class="nav-main mega-menu">
  2. <ul class="nav nav-pills nav-main" id="mainMenu">
  3.  
  4.  
  5.  
  6. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME</a></li>
  7.  
  8. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME1</a></li>
  9. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME2</a></li>
  10. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME3</a></li>
  11. <li><a href="index.php?active=1" class="<?php echo ($_GET['active'] == 1) ? 'active' : 'no-active' ?>"> HOME4</a></li>
  12. </ul>
  13. </nav>



dalej includuje to w index.php

  1. <?php include'header.php'; ?>


ale nie działa w żaden sposób
kropamk
zbadaj element li i powiedz mi czy dodaje jakąś klasę czy wywala błąd.

wrzuciłem u siebie ten kod na localu, nawet z includowanym menu tak jak Ty to robisz i mi dodaje klase active oraz no-active wink.gif kod jest dobrze napisany
Poczatkujacy_Web
Cytat(kropamk @ 9.03.2014, 22:58:02 ) *
zbadaj element li i powiedz mi czy dodaje jakąś klasę czy wywala błąd.

wrzuciłem u siebie ten kod na localu, nawet z includowanym menu tak jak Ty to robisz i mi dodaje klase active oraz no-active wink.gif kod jest dobrze napisany


Dodaje klase "no-active" do elementu "a"

chcialbym aby dodawalo do elementu "li"



Ok, ogarnołem żeby dodawało do li, tylko teraz tak:

mam menu:

  1. <nav class="nav-main mega-menu">
  2.  
  3. <ul class="nav nav-pills nav-main" id="mainMenu">
  4.  
  5.  
  6. <li class="<?php echo ($_GET['active'] == 1) ? 'no-active' : 'active' ?>"><a href="index.php?active=1" > HOME</a></li>
  7. <li class="<?php echo ($_GET['active'] == 1) ? 'no-active' : 'active' ?>"><a href="index1.php?active=1" > HOME1</a></li>
  8. <li class="<?php echo ($_GET['active'] == 1) ? 'no-active' : 'active' ?>"><a href="index2.php?active=1" > HOME2</a></li>
  9. <li class="<?php echo ($_GET['active'] == 1) ? 'no-active' : 'active' ?>"><a href="index3.php?active=1" > HOME3</a></li>
  10.  
  11. </ul>
  12.  
  13. </nav>



wyswietlane w pliku index.php, index1.php i w kazdym dodaje klase active do wszystkich elementow menu... jak zrobic aby wybieralo ten wlasciwy czyli aktywny?
kropamk
po ? jest prawda a po : fałsz więc masz na odwrót wink.gif dodałem jeszcze isset, żeby nie wywalał błędu jak nie ma geta wink.gif

  1. <li class="<?php echo (isset($_GET['active']) == 1) ? 'active' : 'no-active' ?>">
  2. <a href="index.php?active=1" >HOME</a>
  3. </li>



no i widzę, że masz linki do index1.php a nie do index.php a chyba includujesz do index.php, prawda ?
Poczatkujacy_Web
Cytat(kropamk @ 9.03.2014, 23:21:20 ) *
po ? jest prawda a po : fałsz więc masz na odwrót wink.gif dodałem jeszcze isset, żeby nie wywalał błędu jak nie ma geta wink.gif

  1. <li class="<?php echo (isset($_GET['active']) == 1) ? 'active' : 'no-active' ?>">
  2. <a href="index.php?active=1" >HOME</a>
  3. </li>



no i widzę, że masz linki do index1.php a nie do index.php a chyba includujesz do index.php, prawda ?



no ok, a jeśli mam więcej elementów w menu? i inluduje ten sam plik?

chodzi mi o to ze mam w menu podstrony:
home, kontakt, itd

i chce do nich includowac jeden plik z menu tak aby dodawał tylko do aktywnego elementu klase activ.

robie to po to ze strona bedzie miala wiele podstron i chce za jednym zamachem zmieniac potem zakladki w menu.
kropamk
ok to sprawa wygląda tak, każde a w li ma geta page_id o przypisanej wartości tylko dla tej gałęzi. Pod strony, które się zawierają w nim też mają geta.
Czyli index ma wartośc page_id=1, kontakt ma page_id=4, ... itd.

smile.gif kod poniżej

  1. <?php
  2. if (isset($_GET['page_id'])) {
  3. $page_id = $_GET['page_id'];
  4. }
  5. ?>
  6. <div id="menu">
  7. <ul>
  8. <li class="<?php echo ($page_id == 1) ? 'active' : 'no-active' ?>">
  9. <a href="index.php?page_id=1" >HOME</a>
  10. <ul>
  11. <li>
  12. <a href="index.php?page_id=1">item1</a>
  13. </li>
  14. </ul>
  15. </li>
  16.  
  17. <li class="<?php echo ($page_id == 2) ? 'active' : 'no-active' ?>">
  18. <a href="index.php?page_id=2" >HOME</a>
  19. <ul>
  20. <li>
  21. <a href="site.html?page_id=2">item1</a>
  22. </li>
  23. </ul>
  24. </li>
  25. </ul>
  26. </div>
Poczatkujacy_Web
Super ! działa, tylko z tymi linkami nie da się nic zrobić żeby wyglądały naturalnie?
kropamk
a to już odsyłam do mod rewrite wink.gif całkiem inny temat wink.gif
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.