Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jesteś na...
Forum PHP.pl > Forum > PHP
markonix
Zastanawiam się jak rozgryźć pokazywanie miejsca internauty na stronie tj.
Strona główna -> Kategoria -> Konkret (podlinkowane oprócz ostatniego).

Jako że, na stronie mam przyjazne linki myślę nad rozwiązaniem następującym:
http://strona.pl/kategoria/podkategoria/konkret
Cały url ucinamy od prawej do slasha generując kolejno:
http://strona.pl/kategoria/podkategoria/
http://strona.pl/kategoria/
http://strona.pl/
<- mamy linki.
Strona wielojęzyczna oparta o tablice tak więc nazwa strony była by generowana np. w ten sposób:
$_LANG['category_name_'.$fileName.'']
Gdzie $fileName to ostatni z prawej fragment linku (np. podkategoria).

Jest to elastyczne jeśli chodzi o głębokość, ale może da się to lepiej?

Druga sprawa gdzie w modelu MVC należało by umieścić generowanie tego fragmentu strony?


lukaskolista
A moze po prostu na kazdej podstronie recznie ustawiaj pozycje? Kiedys widzialem takie rozwiazanie i sie sprawdzilo, wygladalo to mniej wiecej tak
  1. $nav = array('Artykuły', 'Motoryzacja', $article->title);

pozniej bylo laczenie do stringa
  1. $nav = implode(' / ', $nav);

i wyswietlanie. W ten sposob mozesz zrobic nawigacje jak Ci sie podoba na danej podstronie i nie musi to byc w zaden sposob zwiazane z adresem. Oczywiscie to jest schemat bo trzeba zaimplementowac wielojezycznosc. Ja bym to zrobic w kontrolerze szablonu, tzn. mialby on wlasciwosc
  1. protected $_nav = array();

, nastepnie w kazdym kontrolerze dziedziczacym po kontrolerze szablonu nadpisywal bym ta wlasciwosc a na koncu w szablonie generowal bym stringa i przekazywal prosto do widoku lub w widoku wywolywal metode ktora go wygeneruje. Zalezy tez jak masz zbudowana aplikacje.
markonix
Głównie mi chodziło o to aby to było prawie, że automatyczne - jestem leniwy, a lubię elastyczne rozwiązania.

Moje rozwiązanie samo tworzy linki oraz samo pobiera nazwy (nazwy są w plikach językowych).
W Twoim przypadku musiałbym po prostu to robić 2 razy.
!*!
Skoro masz link

Kod
http://strona.pl/kategoria/podkategoria/konkret


To zakładam że go jakoś odczytujesz. Wrzuć jego wartości w tablice i zmieniaj odpowiednio na wersję językową.

Kod
array('kategoria', 'podkategoria', 'konkret');


czy tam od razu

Kod
array('kategoria' => $lang['cos'], 'podkategoria'=> $lang['cos'], 'konkret'=> $lang['cos']);
john_doe
robiłem coś takiego ostatnio w Codeigniter.
To co tworzy mi bread crumps umieściłem w helperze.

menu mam wielopoziomowe generowane rekurencyjnie z bazy ( lepszym rozwiązaniem jest drzewko ip, materialized path i wtedy bread crumps masz automatycznie). Jak stworzysz to w takiej postaci możesz odtworzyć wstecz kolejnych rodziców, wpakować to np. w tablicę i wyświetlić rozdzielone strzałeczkami smile.gif

markonix
U mnie to strona na plikach (statyczna) więc bazą się nie wspomogę.
!*!
To nie ma znaczenia czy plik/baza skoro możesz to odczytać z linku.
JoShiMa
To się fachowo nazywa ścieżka okruszków. Warto poczytać jak się to robi, żeby było użyteczne i eleganckie.
markonix
  1.  
  2. function makeTrail() {
  3.  
  4. $pathDescription = __SITE_URL . $_SERVER['REQUEST_URI'];
  5. if ($pathDescription[strlen($pathDescription)-1] == '/')
  6. $pathDescription = substr($pathDescription, 0, strlen($pathDescription)-1);
  7.  
  8.  
  9. $parts = explode("/", str_replace("http://", "", $pathDescription));
  10. /*
  11. 0 => '__SITE_URL',
  12. 1 => 'part1',
  13. 2 => 'part2',
  14. ...
  15. */
  16.  
  17. $pathDescription = array();
  18.  
  19. foreach ($parts as $key => $part) {
  20.  
  21. if ($key == 0) {
  22. $url = 'http://'. $part .'/';
  23. $pathDescription[$url] = $this->_LANG['header_trail_'];
  24. } else {
  25. $url .= $part .'/';
  26. $pathDescription[$url] = $this->_LANG['header_trail_'. $part];
  27. }
  28.  
  29. }
  30.  
  31. return $pathDescription;
  32.  
  33. }


Potem w widoku pętla foreach gdzie klucz to url, a wartość to nazwa działu.
Funkcje wywołuje w widoku w metodzie show (nie mam innego pomysłu - moje pierwsze MVC).
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.