Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP wykrywane gdzie aktualnie jest użytkownik.
Forum PHP.pl > Forum > PHP
Reptile ReX
Głowię się i głowię i nic mi nie przychodzi.
Chcę zrobić coś takiego, że button z menu jest aktywny w momencie gdy użytkownik jest na danej stronie.
Nie chodzi mi o HTML/CSS bo to jest rzecz prosta.

Przykład:
Jesteśmy na podstronie "Produkty" więc aktywny jest przycisk "Produkty"
Jesteśmy na Kontakt, więc aktywny jest przycisk "Kontakt"

Ma to się dziać w pełni dynamicznie, bo gdyby chodziło o napisanie kilku stałych warunków to nie ma problemu.
Czy takie coś jest w ogóle realne ?

Proszę o jakieś koncepcje.
erix
No jedyne sensowne, to sprawdzanie bieżącego URL-a z URL-ami linków dostępnych w menu.
Astarot
Jeśli korzystasz z modelu MVC to wg. mnie najrozsądniej będzie w akcji kontrolera stworzyć i przekazać do widoku zmienną np: $this->actPage a pózniej zrobić to warunkami w layoucie na warstwie widoku, ale tak zrobić nie chcesz. Można zrobić to w inny sposób np: budując helper który sprawdzi nazwę kontrolera czy kontrolera i akcji, wg uznania i podmieni klasę przycisku w taki sposób abyś mógł go odznaczyć jako aktywny.

  1.  
  2.  
  3. public function showMenu()
  4. {
  5. //$c = pobieramy nazwę kontrolera
  6.  
  7. $link = array();
  8. $link['produkty'] = '<a class="twojaKlasa" href="...';
  9. $link['kontakt'] = '<a class="twojaKlasa" href="...';
  10.  
  11. if(array_key_exists($c, $link)
  12. str_replace('twojaKlasa', 'klasaAktywnegoPrzycisku', $link[$c]);
  13.  
  14. return $link;
  15. }
  16.  
Reptile ReX
Ooo to drugie rozwiązanie wydaje mi się dosyć sympatyczne.
Słyszałem też o możliwości wykorzystania do tego bazy danych lub XML.

Co o tym sądzicie ?
erix
Cytat
Słyszałem też o możliwości wykorzystania do tego bazy danych lub XML.

Słyszałem też, że samochody mają systemy ABS, ESP, WTF i RTFM.

Co Ci po samych hasłach? Jeśli nie wykorzystujesz tych technologii u siebie, to po co zaprzątać sobie tym głowę?
Reptile ReX
Po co, żeby wiedzieć, po to aby pogłębiać swoją wiedzę a nie tylko zrobić coś na odwal się... smile.gif
Programowanie jest sztuką.
thek
Cytat(Reptile ReX @ 19.07.2011, 07:01:32 ) *
Programowanie jest sztuką
... wyboru i pokazem umiejętności programisty. Lub też ich braku wink.gif
Reptile ReX
Warto wiedzieć więcej, niż mniej smile.gif
Chociaż wiem, że nigdy nie nauczę się tyle, abym nie mógł nauczyć się więcej.
Astarot
Wydaje mi się, że rozwiązanie w oparciu o bazę danych i XML ma sens jeśli spełnia kilka warunków:

1) Kategorii jest rzeczywiście zbyt wiele, aby móc "ręcznie" oznaczyć tą aktywną.
2) Zapytanie do bazy jest wysyłane tylko jeden raz w celu stworzenia pliku cache.
3) Plik cache jest aktualizowany w przypadku dodania,edycji,usunięcia kategorii.

Struktura pliku może zostać zapisana w XML a potem parsowana na podstawie adresu URL tak jak w powyższym helperze.
Ja bym jednak serialozwał te dane, wydaje mi się, że dostęp do nich byłby szybszy niż z pliku XML.
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.