Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ścieżka
Forum PHP.pl > Forum > PHP
Skobi
Mam pytanko, właśnie robie, a dokładniej mam zrobić "ścieżkę" czyli:

  1. home > telewizory -> nowości -> Sony


i teraz mam pytanie macie jakieś pomysły jak to zrobić, bo łopatologicznie
to można zrobić, ale chciałbym aby to był automat??


Mam nadzieje, ze sie jasno wyrazilem
batman
Sposobów na to jest kilka. Jednak opiszę Ci tylko ten co ja stosuję, ponieważ w nim czyje się najlepiej winksmiley.jpg

Mam utworzoną tablicę z mapą serwisu. Otwierając jakąś stronę mam jej kod (wartośc liczbowa, tworzona na podstawie informacji o pliku). Następnie sprawdzam w jakiej części tablicy znajduje się dana strona i wyświetlam scieżkę od "góry" do danej strony. Zamiast kodu strony możesz użyć nazw plików lub innego identyfikatora. Musisz tylko pamiętać, że identyfikator ten powinien być unikatowy.
Skobi
dzieki bardzo, myslalem o tym, jednak jezeli mozesz mi po krotce przedstawic taka tablice w praktyce
bede wdzieczny. no i cos co wyswietla to na ekranie.
batman
Tabela wygląda mniej więcej tak:

  1. <?php
  2. $aPages['kod_strony1'] = 1;
  3. $aPages['kod_strony2'] = array('kod_podstrony1'=>1,'kod_podstrony2'=>1);
  4. $aPages['kod_strony3'] = 1;
  5. // itd
  6. ?>


Resztę pokaże później, ponieważ nie mam tego kodu ze sobą, a pisać od nowa nie mam teraz czasu. Chodzi w nim o to, że mają dany kod strony, na której się aktualnie znajdujemy, przeszukujemy w pętli talicę $aPages. Jeśli znajdziemy interesujący nas kod, wówczas "cofamy" się w tablicy (lub inaczej mówiąc - wracamy do góry tablicy). I w ten oto sposób mamy ścieżkę.

Sorki za opóźnienie. Urwanie głowy w pracy miałem.

Oto przykład ładnej ścieżki. Niestety nie mogę pokazać całej klasy, która jest odpowiedzialna za pliki z zawartością stron. Zamiast tego przerobiłem jedną z metod, która wyświetla ścieżkę.

  1. <?php
  2. // to jest tablica zawierajaca drzewo aplikacji
  3. $apage = array();
  4.  
  5. $apage[100]['name'] = 'start';
  6. $apage[100]['child'] = array();
  7. $apage[100]['child'][101]['name'] = 'powitanie';
  8. $apage[100]['child'][101]['child'] = array();
  9. $apage[100]['child'][101]['child'][111]['name'] = 'duzo daleko ;)';
  10. $apage[100]['child'][102]['name'] = 'jakas strona';
  11.  
  12. $apage[200]['name'] = 'pomoc';
  13. $apage[200]['child'][201]['name'] = 'jakas strona 2';
  14.  
  15. // jesli chcesz mozesz zrobic cos takiego, by zobaczyc jak wyglada 
  16. /*
  17. echo '<pre>';
  18. print_r($apage);
  19. echo '</pre>';
  20. */
  21.  
  22.  
  23. // to jest funkcja, ktora uklada sciezke - nie jes to idealna funkcja, ale dziala ;)
  24.  
  25. function getPath($arr=array(),$currentpage,$backpage='') {
  26. if(!is_array($arr) || count($arr) == 0) return ''; // tu mozna zwrocic dowolna rzecz. u mnie - wyjatek
  27.  
  28. foreach($arr as $k => $v) {
  29. if($k == $currentpage) {
  30. $sout = $backpage.' ť '.$v['name'];
  31. }
  32.  
  33. if(is_array($v['child'])) 
  34. $sout .= getPath($v['child'],$currentpage, $backpage.' ť '.$v['name']);
  35. }
  36.  
  37. return $sout;
  38. }
  39.  
  40. // a tak sie tego uzywa
  41. echo getPath($apage,111);
  42. ?>


Nie miałem okazji sprawdzić poprawności działania na większej ilości przykładów, ale wydaje mi się, że powinno działać.

Nie sugeruj się numerami stron (100, 101, 200, itd.). Jest to tylko i wyłącznie na potrzeby prezentacji winksmiley.jpg. Oprócz podanych wartości, możesz dposać kolejne, jak na przykład link, obrazek, dodatkowe style, itd.

Miłej zabawy.
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.