Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ustawienie przyjaznych URL'i dla CMS'a, jak pominąć w urlu podstronę wywołującą dany moduł...?
RaRu
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.02.2003
Skąd: Turośń Kościelna (Białystok)

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


Witam,

na swoich stronach do tworzenia przyjaznych URL'i wykorzystuję klasę: "NiceUrlsRouter" opisaną chociażby na tej stronie. Zawsze trzymałem sobie podstrony w oddzielnym katalogu i mogłem bez problemu uzyskać url'e typu:
  • domena.pl/strona1.html
  • domena.pl/strona2.html
  • itd...
Jestem w trakcie projektowania CMS'a i tutaj w przypadku gdy treści podstron będą pobierane z bazy danych to dla każdego modułu (strony statyczne, galerie, aktualności, download....) muszę stworzyć odpowiednio podstrony np: sites.php , gallery.php, news.php, download.php... dzięki którym będę mógł wyświetlić treści podstron, kategorie i zawartości kategorii z bazy danych. W takim przypadku moje url'e będą odpowiednio przybierały postać:
  • domena.pl/sites/strona1.html
  • domena.pl/sites/strona2.html
  • domena.pl/sites/stronax.html
  • domena.pl/gallery/galeria1/
  • domena.pl/gallery/galeria2/
  • domena.pl/gallery/galeriax/
  • domena.pl/news/kat1/news1.html
  • domena.pl/news/kat2/news2.html
  • domena.pl/news/kat2/newsx.html

.....

Moje pytanie jest następujące: w jaki sposób mógłbym pozbyć się z url'a odpowiednio: sites, gallery, news.. aby uzyskać np: dla strony statycznej wczytywanej z bazy danych url postaci:
  • domena.pl/strona1.html
Wiem, że jest możliwe takie rozwiązanie, tylko nie wiem jakie podejście trzeba zastosować aby uzyskać taki efekt, generalnie na podstawie urla rozpoznaję czy mam wczytać stronę statyczną (sites) czy aktualność (news) czy np galerię (gallery) gdyby z url'a zniknęły te parametry to nie bardzo wiem na jakiej podstawie wyświetlać (rozpoznać) co ma być aktualnie wczytane z bazy danych, czy strona statyczna, czy aktualność czy coś innego....

Będę wdzięczny za wszelką pomoc, pozdrawiam...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
daw22
post
Post #2





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 1.09.2007

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


Witam,

Zaimplementuj do swojej klasy routera jeszcze klasę RewriteRouter.
Przeszukaj te forum wpisując frazę "rewrite router".
Mniej więcej, opiszę w jaki sposób to zrobić, klasa RewriteRouter, będzie wczytywała określone reguły z jakiegoś pliku np.
plik reguly.php
  1. <?php
  2. $aRules[] = array('stron2.html', array('controller'=>'download', 'action' => 'jakas_strona_akcji', 'params' => array(/**Tutaj mozesz wypisac parametry jakie chcesz jeszcze przekazac do routera.**/);
  3. // i tak dalej dodajesz kolejne reguły
  4. ?>

Następnie w konstruktorze [czy jak tam u Ciebie to jest zrobione] sprawdzasz przekazany url parametru [tj. stron2.html], następnie tworzysz obiekt klasy RewriteRouter i implementujesz w nim metodę, która dokona analizę adresu przekazanego do routera i sprawdzi czy istnieje taka reguła, jeśli istnieje taka reguła, od razu przekazujesz tą tablice z kontrolerem, akcją i parametrami do ustawien routera, jeżeli nie istnieje taka reguła w pliku to pozwalasz routerowi na anzlizowanie adresu URL i ustawiasz odpowiedni kontroler, akcje i parametry. U mnie jest tak zrobione i działą to wyśmienicie, mogę ustawiać reguły, lecz nie muszę, bardzo fajna sprawa i duża elastyczność.

Pozdrawiam,
daw22
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 22:37