Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]przerobienie zwykłego menu na php
adek-
post 15.08.2011, 17:17:51
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Chciałem zautomatyzować menu, żeby nie wstawiać na każdej stronie i modyfikować go który link jest aktywny, a który nie, tylko raz stworzyć i za pomocą includa i zmiennych zaaplikować. Dlatego chciałem zrobić coś takiego co opiszę poniżej.
MENU: które miałem na każdej stronie z osobna - wymagało ukrywania nieaktywnych podlinków i zmiany co jest active co nie itd.
  1. <tr><td class="MenuItem1"><a href="?id=opcja1" >Nadrzędne</a></td></tr>
  2. <!--teraz podmenusy nadrzednej opcji1 ktore są ukryte dopóki ktoś nie kliknie w nadrzędne opcja1
  3. <tr><td class="MenuItem2"><a href="?id=opcja1podrz1" >podrzeędne1</a></td></tr>
  4. <tr><td class="MenuItem2"><a href="?id=opcja1podrz2" >podrzędne2</a></td></tr>-->
  5. //ponizej nadrzędne aktynwe, czyli podmenu widoczne, z aktywnym 3 linkiem podmenu
  6. <tr><td class="MenuHdr1"><a href="?id=opcja2" >Nadrzędne aktywne</a></td></tr>
  7. <tr><td class="MenuItem2"><a href="?id=opcja2podrz1" >podrzeędne1</a></td></tr>
  8. <tr><td class="MenuItem2"><a href="?id=opcja2podrz2" >podrzędne2</a></td></tr>
  9. <tr><td class="MenuItem2 currentItemHighlight2"><a href="?id=opcja2podrz3" >podrzędne3 aktywne</a></td></tr>
  10. <tr><td class="MenuItem1"><a href="?id=opcja3" >Nadrzędne</a></td></tr>

wygląda to tak:

i teraz zrobiłem sobie coś takiego do wyświetlania danych zaincludowanych z plików, a więc mogę mieć też i zaincludowane menu i w jednej wersji a nie 100 na 100 stronach.
  1. <?php
  2. $id=$_GET['id'];
  3. if(empty($id) or $id=="opcja1"){
  4. include("dane/plik1.php");
  5. }
  6. if($id=="opcja2"){ include("dane/plik2.php"); }
  7. if($id=="opcja2podrz1"){ include("dane/plik1.php"); }
  8. if($id=="opcja2podrz2"){ include("dane/plik2.php"); }
  9. if($id=="opcja2podrz3"){ include("dane/plik3.php"); }
  10. ?>


Czyli w zależności jaki link klikniesz ładuje Ci do diva odpowiedni plik. Z tym że chciał bym, aby po kliknięciu na jakieś nadrzędne zrobiło się class z MenuItem1 na MenuHdr1 i w MenuItem2 aktywnym dodawało currentItemHighlight2, czyli zapewne może działać jakiś if, jeśli kliknięte nadrzędne to wyświetlaj podrzędne? ale jak zrobić, że zmienia się z aktywnego na nieaktywny i vice versa? if kliknięte ?id=opcja1podrz2 to i poustawiać zmienne class=" '.$activ.' " i unactive ? Z tym, że będzie kłopot jak będzie kilka wpisów... dodam, że strona może śmiało się przeładowywać, nie musi być nic ajaxowatego, dajcie jakiś pomysł jak się za to wziąć bo ja nie potrafię tego ugryźć... a dręczy mnie 100-krotne przepisywanie menu i zmienianie go!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
ersiu
post 15.08.2011, 17:43:03
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.08.2007

Ostrzeżenie: (0%)
-----


porob sobie pliki ktore wczytujesz o takiej samej nazwie bedzie ci prosciej...
  1. <?php
  2. $main = "main"; // plik wyswietlajacy sie jako strona glowna
  3. $dir = "/dane/"; // katalog z danymi
  4. $extension = ".php"; // rozszerzenie plikow
  5. if(!empty($_GET['id']) && file_exists($dir.$_GET['id'].$extension)){
  6. include($dir.$_GET['id'].$extension);
  7. }else{
  8. include($dir.$main.$extension);
  9. }
  10. ?>

a co do menu, to ja polecałbym je zrobić tak, aby PHP je generowało z MySQL lub xml zamiast używać ifów...

Ten post edytował ersiu 15.08.2011, 17:44:49
Go to the top of the page
+Quote Post
adek-
post 15.08.2011, 19:17:42
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


generowało w sensie? Jeśli chodzi o xml, to z chęcią mogę sobie zrobić pliczek xml, z danymi jakie potrzebuje, ale jeśli byś rzucił troszkę więcej światła na to w jaki sposób by takowe menu miało dziąłac?
Bo jeśli wrzucę sobie wszystkie możliwe odnośniki menu do xmla to na chwilę obecną nie wyobrażam sobie jak mi to może pomóc w ustawianiu active, czy unactive itd. Jakieś tablice z wyciągiem danych z xml?
Go to the top of the page
+Quote Post
kudlatypawelek
post 16.08.2011, 11:22:28
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 5
Dołączył: 30.06.2011

Ostrzeżenie: (0%)
-----


Proponuję przygotować sobie oddzielną tabele w bazie [id, nazwa, parent_id] i dzięki takiej strukturze będziesz mógł w kolejnych wierszach zapisywać jakie elementy są kategorią nadrzędną, a co jest potomkiem danej kategorii. Potem po pobraniu danych z bazy trzeba rekurencyjnie przeglądać drzewo i porównywać z aktualnym id jakie przyszło np. z GET'a.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:27