![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 20.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
niedawno postanowilem sie troche podszkolic w programowaniu obiektowym i napisac aplikacje wykorzystujac MVC, troche glowkowalem i wszystko jakos ogarnalem, chodiz fajnie... z tym ze nie chce pozniej sie bawic w tworzenie przyjaznych URL-i gdy juz wszystko bedize gotowe... wiec postanowilem to zrobic teraz, zanim stworze cala strukture podstron... W kazdym razie przejdzmy do wlasciwego problemu, jak mi wiadomo gdy opieramy sie na MVC wywolanie jakiejs akcji tudziez podstrony polega na podaniu kontrollera i pozniej opcjonalnie akcji i ewentualnie dodatkowych parametrow. a wiec np. jezeli na stronie chcialbym wyswietlic jakas kategorie, wyciagana z bazy, URL wygladal by mniej wiecej tak : "?controller=kategorie&action=pokaz&kat=agd" w takim przypadku stworzenie przyjaznych linkow w formie "/kategorie/pokaz/agd/" nie jest problemem... jednak zalezalo by mi, jezeli jest to mozliwe wogole, aby link mial postac duzo prostsza... a mianowicie nie pokazywal kontrollera i akcji, a bezposrednio kategorie: "/agd/" . Wydaje mi sie ze bylo by to dobre rozwiazanie, zwlaszcza gdyby w linku byla kategoria i podkategoria, nie mowiac jzu o przypadku gdyby ich nazwy skladaly sie z kilku slow, gdyby do tego jeszcze dorzucic nazwe kontrolera i akcji, link moglby urosnac do zbyt duzych rozmiarow.... a wiec moje pytanie brzmi, czy jest taka mozliwosc? bo nie moge wymyslic, jak w takim razie router rozpoznal by ktory kontroller i ktora akcje ma odpalic... |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat URL wygladal by mniej wiecej tak : "?controller=kategorie&action=pokaz&kat=agd" w takim przypadku stworzenie przyjaznych linkow w formie "/kategorie/pokaz/agd/" nie jest problemem... jednak zalezalo by mi, jezeli jest to mozliwe wogole, aby link mial postac duzo prostsza... a mianowicie nie pokazywal kontrollera i akcji, a bezposrednio kategorie: "/agd/" Robisz mapę URLi "/agd/" => array( controler => 'kategorie', action=>'pokaz', kat => 321 ); i jesli dopasujesz URL wywowalania domappingu to odpalasz kontroler wskazany w mappingu. Jesli nie ma to szukasz kontrolera wg URL'a - tutaj kontroler nazywal by sie 'agd'. To wstęp do rozwiązania - przed tobą wiele problemów zeby to zaimplementować poprawine ![]() -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 20.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
hmm.. nie bardzo rozumiem jak by to mialo dzialac ;( ale przyszla mi pewna mysl do glowy... narazie rozpoznaje kontroller akcje itd, w ten sposob iz zapisuje do tablicy wlasnej tablice parametrow Get, nastepnie za pomoca array_shift wyciagam z niej pokolei kontroller akcje i reszte przypisuje do parametrow
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ja to robie przed zbudowaniem kontrolera. Jako plugin dispatchera.
Odczytuję routerem URL. Szukam Nice URLi pasujących do URLa. Jeśli istnieje taki to: Plugin je przerabia, z /kuchnie/agd na /produkty/z_kategorii/123. Teraz jest odpalana akcja "z_kategorii" w kontrolerze "produkty". Jeśli nie istnieje to proboje odpalic akcje "/kuchnie/agd" - akcja "agd" w kontrolerze "kuchnie" - oczywiscie 404 jesli kontroler/akcja nie istnieje. Najwazniejszy jest tu mapping URLi do kontrolera/akcji/id. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej przyjąć, że:
- wszystkie żądania wysyłamy do /index.php - standardem są nice_url - mamy routing standardowy, który ma postać np: strona.pl/moduł/kontroler/akcja/param1/val1/param2/val2 Jeśli z jakiś powodów nice_url off, to link wygląda tak: strona.pl/index.php?page=moduł/kontroler/akcja/param1/val1/param2/val2 Tu moim zdaniem nie warto bawić się w module=moduł&controller=kontroler itd. Nice są standardem a tradycyjne linki sytuacją awaryjną, ułatwia nam to imlementację i mamy tylko jedną uniwersalną regułę w .htaccess Linki generujemy jakąś funkcją typu: - w parametrach decydujemy, czy link ma np. zapamiętywać zmienne z adresu, którego routingu użyć (możemy używać wszak niestandardowych), czy link ma być przyjazny czy nie i tak dalej Samo okodowanie tego także jest proste, wystarczy klasa powiedzmy "router" parsująca adres, schody zaczynają się dopiero przy niestandardowych routingach, dlatego tu znów warto rozbudować standardowy router o takie założenia jak: - znak / oddziela kontroler, akcję moduł itd. - znak ; słowa kluczowe - znak , parametry - znak - numer strony Najlepsza oczywiście jest jedna, spójna koncepcja i jeden routing - niestandardowe przydają się, gdy trzeba dodać zewnętrzną aplikację jako moduł, zachować kompatybilność wsteczną linków i tak dalej. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wątek nie ma de facto nic wspólnego z samym wzorcem MVC - określenie parametrów żądania to zadanie routera. Bardzo proste, a jednocześnie dosyć wszechstrone rozwiązanie to wspomniana przez dr_bonzo mapa wzorców. Definiujesz sobie wszystkie "wzorce" URLi w postaci wyrażeń regularnych, dodajesz do nich jakieś domyślne parametry (jeżeli potrzeba). Każda reguła musi Ci zwrócić zawsze minimum dwie informacje: nazwy kontrolera i akcji.
Mapa może mieć przykładowo postać: Kod produkt: Określenie paramterów żądania sprowadza się teraz do sprawdzenia czy REQUEST_URI pasuje do wzoru - jeżeli nie sprawdzamy kolejny aż do 404.
wzór: #^/produkt/(?<id>\d+)/(?<nazwa>[\w-]+)\.html$# domyślne-parametry: kontroler: produkt, akcja: pokaż strona-główna: wzór: #^/$# domyślne-parametry: kontroler: głowna, akcja: pokaż |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
@Crozin - nie o taką mapę mi chodziło - ty prezentujesz "konfigurację routingu" (obecna w Symfony, RoR, etc.).
Mi chodzilo o doslowne zmapowanie /komputery/apple/macbook.html -> { kontroler: product , akcja: show , id : 123 } I widzisz URL - > szukasz czy ma mapowanie - jak tak to "przepisujesz" url na /product/show/123 i odpalasz odpowidni kontroler i akcję -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
poniewaz aktualnie siadlem do pisania cms, ja mam taki pomysl. U mnie kazda strona tj. arktykuly itd bedzie tworzyl uzytkownik (wiadoma sprawa) w momencie tworzenia bedzie musial zdefiniowac typ dokumentu (czyli jaki modul bedzie za to odpowiedzialny), zostanie mu nadany jakis id dokumentu, wiec juz teraz jestem w stanie okreslic link do tego dokumentu i powiedzmy ze ma on taka forme /index.php?kontroler=artykul&id=20. Cos takiego zapisuje do bazy w tabeli np linki. Oczywiscie sa tam kolumny ktore definiuja nasz nice url np artykul/20 oraz prawdziwy url i inne rzeczy
![]() Nastepnie robie sobie clase ktora pobiera mi wszystkie dane z tabli linki odszukuje co trzeba w wynikach odpowiednimi metodami clasy i znam prawidlowy url z ktorego latwo moge wyciagnac typ kontrolera i id z tego artykul/20 bedzie ciezko ale z tego kontroler=artykul&id=20 juz nie ... robimy explode po & i mamy 2 parametry ![]() Oczywiscie jest to wszystko bardzo uproszczone ale jak widac mozna to latwo rozbudowac dodajac jakies np jakis task, option itd Co moge jeszcze dodac to jest to, ze gdy ktos bedzie nam wpisywac jakies scierwo do urla np pod id to nie bedzie tego w zapytaniu ktory szuka id podanym w url, poniewaz wszystkie dane bede mial pobrane niezaleznie od tego co jest w url-u pozniej wystarczy jak pisalem odnalesc szukany przez nas link i okreslic co trzeba uruchomic.. Daje ci to przewage nad tym ze nie musisz definiowac wszystkich mozliwych wzorcow tylko jeden i kazdy odnosi sie do index.php i to jest moim zdaniem najlepsze rozwiazanie Ten post edytował wiiir 7.09.2010, 11:22:30 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
To co napisałeś to jakiś koszmar, mam utworzyć adres, wrzucać go do bazy a potem pobierać z bazy by wyciągać z niego zmienne explodem?
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
To co napisałeś to jakiś koszmar, mam utworzyć adres, wrzucać go do bazy a potem pobierać z bazy by wyciągać z niego zmienne explodem? ![]() No przeciez i tak trzymasz w bazie wszystko lol...... odpowiedz mi na pytanie jak generujesz menu? ![]() ![]() Poza tym z tego co wiem do joomla dziala w podobny sposob i jakos wszystko smiga dobrze |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Menu generuje normalnie, na podstawie drzewa kategorii podpiętego do tego menu. Linki tworzę tak:
resztę robi system, który generuje linki biorąc pod uwagę zmienne URLowe, zmienne serwerowe, konfigurację, subdomeny, parametry typu czy link ma być nice czy ugly oraz routing - można użyć routingu standardowego lub niestandardowego a w Twoim przypadku trzeba poprawiać wszystkie linki w bazie. A jak będziesz miał link typu stron.pl/artykuly/fajne;zycie;programisty,345-3.html to już nie zadziała bo to link do strony nr 3 tego artykułu? Dodaj do tego parametry i otrzymasz niemal nieskończenie wiele kombinacji różnych linków, chcesz to trzymać w bazie wszystko? I co mnie interesuje jak jest w dżumli czy innych tego typu skryptach zwanych CMSami, statyczne linki to się robiło gdy człowiek się HTML uczył. Dzisiaj robi się tak, że wrzucasz tablicę parametrów do widoku i tą samą tablicę odbierasz w kontrolerze, natomiast wygląd linku jest sprawą wtórną i odpowiada za to właśnie routing, który definiujesz sobie w pliku cfg. Dzięki temu programista kompletnie nie musi przejmować się wyglądem linków, ustawię sobie w cfg linki zwykłe to będę miał: stron.pl/index.php?page=artykuly/fajne;zycie;programisty,345-3.html linki nice, router standard: stron.pl/artykuly/fajne;zycie;programisty,345-3.html albo jakiś routing niestandardowy: stron.pl/fajne-zycie-programisty;artykuly_345,3.html Ale zawsze do linku wrzucam id artykułu 345, numer strony 3 i tak dalej a otrzymuję to samo w kontrolerze. Jak ktoś zna lepszy sposób to flaszkę stawiam. Już się w życiu statycznych linków naprzepisywałem trochę, widziałem też po kilkaset reguł w .htaccess. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tyle ze moim przypadku moge zrobic sobie np
i np bedzie oznaczac to jakis artykul oraz moge zrobic tak
i to juz bedzie oznaczac strone rejestracji, oczywiscie nic nam nie mowi ze bedzie to rejestracja Do tego u ciebie w funkcji routujacej musisz (jak zakladam) trzymac sie pewnych regol, czyli badac czy jakas sekcja istnieje, jesli tak co jaka jest jej wartosc np musisz zastasowac jakies znaki oddzielajace poszczegolne sekcje ja nie musze bo wiem ze to nizej
oznacza np component = com_art, option = new i uruchamiam co trzeba co mogloby byc jednoznaczne z tym zapisem
a jak bede chcial zastosowac normalne linki to bede mial
wiec kto mowi ze te linki sa statyczne jak wyswietlac moge cokolwiek (bo nie musze trzymac sie zadnego schematu) i uruchamiac to co musi zostac uruchomione |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
- a jak ktoś doda np. artykuł zawierający identyczny tytuł? Słowa kluczowe są tylko dla SEO, w dodatku szukanie po tekście obciąża bazę, dlatego powszechnie stosuje się ID. A jak ktoś zmieni tytuł artykułu to też musisz to poprawiać w swojej bazie linków - niepraktyczne to. Cytat musisz (jak zakladam) trzymac sie pewnych regol - zgadza się, ale identyczny problem jest u Ciebie przy tworzeniu tych linków, z nieba przecież one nie spadają ![]() A przecież linki to nie tylko kategorie/podkategorie serwisu czy artykułu, lecz także paginacja czy wyszukiwarka, parametry czy choćby zdjęcia. Dla każdego zdjęcia będziesz dodawał rekord do swojej bazy linków? Zresztą chciałbym widzieć, jak to będzie działać, trzymać w bazie oba adresy, ciekawe jak trzeba będzie pozmieniać nazwy zmiennych albo ktoś stwierdzi, że moduł to będzie teraz subdomena bo takie są teraz trendy ![]() ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat - a jak ktoś doda np. artykuł zawierający identyczny tytuł? Słowa kluczowe są tylko dla SEO, w dodatku szukanie po tekście obciąża bazę, dlatego powszechnie stosuje się ID. A jak ktoś zmieni tytuł artykułu to też musisz to poprawiać w swojej bazie linków - niepraktyczne to. Nie ma problemu - dobry algorytm tworzacy unikalne URLe (slugi) i po problemie - np dopisanie "_2". Cytat A jak ktoś zmieni tytuł artykułu to też musisz to poprawiać w swojej bazie linków - niepraktyczne to. A to czemu? Albo zostawiasz permalink (nie zmieniasz linka) albo po prostu go aktualizujesz automatycznie. Cytat ... w dodatku szukanie po tekście obciąża bazę, dlatego powszechnie stosuje się ID. Marudzenie, jedna prosta SQLka szukająca po varchar(255) z indexem nie jest wcale powolna. Cytat A przecież linki to nie tylko kategorie/podkategorie serwisu czy artykułu, lecz także paginacja czy wyszukiwarka, parametry czy choćby zdjęcia. Dla każdego zdjęcia będziesz dodawał rekord do swojej bazy linków? A po co? Paginacja i szukarka operuje na QUERY_STRINGu /komputery/laptopy/sony.hmyl?page=3&procesor=1 Nice URL patrzy na URL przed "?" i po problemie. Cytat ciekawe jak trzeba będzie pozmieniać nazwy zmiennych albo ktoś stwierdzi, że moduł to będzie teraz subdomena bo takie są teraz trendy Zakładasz duże prawdopodobieństwo zrobienia subdomeny jako modułu, a nisko oceniasz wymaganie klienta aby linki np. w sklepie były bez żadnego ID? -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zresztą chciałbym widzieć, jak to będzie działać, trzymać w bazie oba adresy, ciekawe jak trzeba będzie pozmieniać nazwy zmiennych albo ktoś stwierdzi, że moduł to będzie teraz subdomena bo takie są teraz trendy ![]() ![]() sek w tym ze potrzeba mi tylko 1 reguly RewriteRule ^(.*)$ index.php co do paginacji to juz padla odpowiedz ale: Kod http://strona.pl/strona/aktykul/podartykul/sdfsdfsdf.html?search=szukana_fraza&ordering=#1 jak uzyjesz parse_url() to jest bardzo latwo odczytac calosc nie trzeba robic za duzo, tym bardziej ze mam juz podane drzewo do ktore moge sobie wyswietlnic na stronie: Home -> strona -> aktykul ->podartykul w podanym przykladzie masz strone wyszukiwarki gdzie w query string znajdziesz szukana fraze, typ sortowania a po"#" (czyli fragment) numer strony a to oznacza ze dalszym ciagu nie musze sie trzymac schamatu Co do takich samych nazw bardzo prosta sprawa robisz jakis unikalny id i artykul juz ma alias 3123_to-jest-jakis-post i otrzymujesz dodatkowy atut (jak podales) szukanie po id, w dalszym ciagu daje mi mozliwosc pisania linku bez schematow z 1 regula w htaccess jeszcze mi sie przypomnialo ze przeciez propo query string to jest przeciez parse_str wiec nie trzeba zadnego explode Ten post edytował wiiir 8.09.2010, 20:20:15 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat A po co? Paginacja i szukarka operuje na QUERY_STRINGu /komputery/laptopy/sony.hmyl?page=3&procesor=1 - i doklejony po "?" numer strony już nie wygląda ładnie. I kto ma określać gdzie, kiedy kończy się nice url a zaczyna "?"? Co trzymać w niceurl i bazie a co nie? I jak tworzymy takie linki? Pobieramy nice url z bazy a query string doklejamy?Nice URL patrzy na URL przed "?" i po problemie. I wcale nie marudzę, każdy robi jak chce ale Wasz sposób wydaje się mieć zbyt dużo wad: - dodatkowe zapytania mysql i wzrost transferu z bazy - algorytm sprawdzający unikalność URLi - obsługa URLi w bazie - słaba elastyczność, niska odporność na zmiany i modyfikacje, ciężko dodać zewnętrzną aplikację jako moduł bez pełnej integracji U mnie jest tylko: - algorytm generujący nice URLe - algorytm odczytujący URLe U Was bardziej rozbudowane będzie generowanie URLi a u mnie odczyt (dochodzi routing). Cytat wymaganie klienta aby linki np. w sklepie były bez żadnego ID - wtedy musimy zrobić unikalny title (lub id oparty o title) i na jego podstawie pobierać treść z bazy, problemu tu nie widzę.Po mojemu to Wasz sposób jest mało elegancki (widać zmienne np. w paginatorze czy galerii zdjęć) a w dodatku trudniejszy w programowaniu. Standardowy router wrzucający zmienne do tablicy na podstawie znaków typu -;, to przecież żadna czarna magia. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Po mojemu to Wasz sposób jest mało elegancki (widać zmienne np. w paginatorze czy galerii zdjęć) a w dodatku trudniejszy w programowaniu A u ciebie nie widac? Masz linki typu "siodma_strona_artykulu_o_ziemniakach.html" ? albo "wyszukiwanie_ziemniakow_warszawa_1990-2000.html" ? Cytat i doklejony po "?" numer strony już nie wygląda ładnie. I kto ma określać gdzie, kiedy kończy się nice url a zaczyna "?"?Co trzymać w niceurl i bazie a co nie? To chyba proste - jest max JEDEN "?" w URLu. parse_url + parse_str i po problemie. Mielismy wczesniej paginacje jako /komputery/laptopy/sony/3.html ale pozniej dochodzila masa innych parametrow do ograniczania przegladania produktow i nr strony przeszedl do QUERY_STRINGa. Cytat I jak tworzymy takie linki? Pobieramy nice url z bazy a query string doklejamy? W bazie trzymam URL do kategorii produktow, do pojedynczego produktu,itd. Wiec jak mam 3cia strone kategorii to URL do kategorii pobieram z bazy /komputery/laptopy/sony.html i doklejam "?page=3" Cytat - algorytm odczytujący URLe No to mam pytanie: jak wyglada utworzenie URLa dla produktu sony_vaio_x3 w kategorii /komputery/laptopy/sony ? Używasz za każdym razem drzewa kategorii? -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Używasz za każdym razem drzewa kategorii? - tylko jeśli strona ma być na te słowa pozycjonowana to tak (lub klient się upiera), by wyświetlić daną kategorię czy produkt używam tylko title+id, zresztą przy depth rzędu 4 czy 5-ciu byłoby to kłopotliwe. Najczęściej do adresu wrzucam tylko moduł lub moduł i kontroler albo jak kto woli kategorię/podkategorię, z czego zazwyczaj moduł ładnie umieszczamy w subdomenie np. www.komputery.strona.pl/laptopy/sony_vaio_x3,45,3456.htmlOczywiście trzeba odróżnić, czy jest to strona kategorii czy produktu, np. allegro dodaje "i" z tego co pamiętam (pewnie od item=), tu akurat dodałem dwa ID - pierwsze to gałąź a drugie ID produktu, można też użyć np. średnika - cyfra po średniku to gałąź a po , to ID produktu - to już od nas zależy ![]() Jednak z punktu widzenia SEO nie jest dobrze wsadzać słowo "laptopy" jeśli na nie nie pozycjonujemy, można je wywalić całkowicie albo wrzucać na koniec adresu (słowa kluczowe na początku adresu mają większą moc). |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
- i doklejony po "?" numer strony już nie wygląda ładnie. I kto ma określać gdzie, kiedy kończy się nice url a zaczyna "?"? Co trzymać w niceurl i bazie a co nie? I jak tworzymy takie linki? Pobieramy nice url z bazy a query string doklejamy? w bazie nie trzymamy nice urli tylko oryginalny url i alias akrykulu czy strony, Czyli tak naprawde nice linkiem moze byc drzewo aliasow /nazwa_podartykulu/nazwa_artykulu i w tym wypadku (myslac logicznie) jesli artykul wywolujemy z podartykulu mozemy go pozycjonowac wzgledem calego drzewa I wcale nie marudzę, każdy robi jak chce ale Wasz sposób wydaje się mieć zbyt dużo wad: - dodatkowe zapytania mysql i wzrost transferu z bazy - algorytm sprawdzający unikalność URLi - obsługa URLi w bazie - słaba elastyczność, niska odporność na zmiany i modyfikacje, ciężko dodać zewnętrzną aplikację jako moduł bez pełnej integracji - wcale nie dodatkowe polaczenie, zarowno u mnie jak i u Ciebie musze nawiazac polaczenie i pobrac jakies parametry zeby stowrzyc ten link - nie jest potrzebny algorytm ktory bedzie sprawdzal bo w momencie jego utrzworzenia mam 100% szansy ze bedzie unikalny - tego nie rozumiem - wlasnie wysoka elastycznosc i duza odpornosc na zmiany, ty jak zmienisz algortym ktory generuje linki musisz zmienic algorytm ktory odczytuje linki ja nie musze bo dla mnie jest niewazne jak on wyglada. W moim przypadku musze zmienic routing gdy dodaje kolejna opcje do linka co w towim przypadku tez jest konieczne. Jeszcze niewidzialem aplikacji do ktorej mozna dolaczyc cos co nie jest kompatybilne bo predzej czy pozniej sie wywali badz wogole nie wlaczy. Ten post edytował wiiir 9.09.2010, 10:30:13 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat w bazie nie trzymamy nice urli tylko oryginalny url i alias akrykulu czy strony - no to tak czy inaczej trzeba url generować, określać jak ma wyglądać alias, czego ma alias dotyczyć a czego nie - nie za skomplikowane to się robi? Wychodzi na to, że część nice-urla trzymamy w bazie. Prościej byłoby zapisywać oryginalny link i odczytywać parametry na podstawie ID (widziałem już takie rozwiązanie, adresy był typu strona.pl/234 strona.pl/567 itd. Wystarczy dodać słowa kluczowe)Cytat wcale nie dodatkowe polaczenie, zarowno u mnie jak i u Ciebie musze nawiazac polaczenie i pobrac jakies parametry zeby stowrzyc ten link - nieprawda, u mnie z linku dostajesz od razu tablicę parametrów, u siebie musisz odpytać najpierw bazę by dostać te parametry (no i czy nie lepiej byłoby je trzymać w postaci tablicy zserializowanej?)Cytat nie jest potrzebny algorytm ktory bedzie sprawdzal bo w momencie jego utrzworzenia mam 100% szansy ze bedzie unikalny - szansa jest zasadniczo pomiędzy 0 a 100%, skąd ta pewność, że gdy ktoś doda artykuł to tytuł będzie unikalny? Trzeba to sprawdzać przecież, tym bardziej, że jak sam wcześniej napisałeś link typu strona.pl/coś-tam-ktoś-tam może prowadzić do czegokolwiek.Cytat - tego nie rozumiem - przy np. edycji artykułu albo jego usunięciu trzeba poprawiać też bazę linkówCytat ty jak zmienisz algortym ktory generuje linki musisz zmienic algorytm ktory odczytuje linki - a guzik, bo oba korzystają z tego samego routingu. Metoda tworząca url jako jeden z parametrów przyjmuje routing (gdy nie podamy to idzie standardowy) a metoda odczytująca URL i wrzucająca zmienne do requesta także bazuje na tym routingu, routing można wygodnie zdefiniować w postaci ini, cfg etc. Cytat Jeszcze niewidzialem aplikacji do ktorej mozna dolaczyc cos co nie jest kompatybilne - dziwne. U mnie wystarczy utworzyć moduł w bazie, podać jako parametr ścieżkę do pliku .php oraz nazwę zmiennej, która będzie dostępna w szablonach podpiętych pod gałęzie z włączonym tym modułem. Można też podać link do PA tego modułu, który będzie się wyświetlał w PA aplikacji - w ten sposób zazwyczaj dołączam skrypty typu kursy walut czy prognoza pogody.Można oczywiście definiować aliasy w bazie, wpisywać ręcznie linki, losować słowa kluczowe wg ich seo priority itd. ale system nie może się na tym opierać, u mnie byłby to pewnie jakiś routing niestandardowy wdrożony w jednym module choć sam nie wiem w jakim celu, by zaoszczędzić kilka znaków w urlu? Dając parametry na końcu adresu na seo nic nie tracimy ![]() |
|
|
![]()
Post
#21
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Cytat nie jest potrzebny algorytm ktory bedzie sprawdzal bo w momencie jego utrzworzenia mam 100% szansy ze bedzie unikalny - szansa jest zasadniczo pomiędzy 0 a 100%, skąd ta pewność, że gdy ktoś doda artykuł to tytuł będzie unikalny? Trzeba to sprawdzać przecież, tym bardziej, że jak sam wcześniej napisałeś link typu strona.pl/coś-tam-ktoś-tam może prowadzić do czegokolwiek. Mam algorytm, który gwarantuje, że URL będzie unikalny, nawet dla 1000ca artykułów o tym samym tytule. Wszystko jest załatwiane automatycznie - podaję tytuł artykułu - dostaję unikalny slug (np. 'podatki_w_2011_roku'). Po prostu jak znajdę powtarzający się podstawowy slug - do dopisuję kolejną liczbę na końcu 'podatki_w_2011_roku_2' etc. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#22
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@dr_bonzo mozesz pokazac jak mapujesz te url w router'ze?Bo ty masz predefiniowane url a nie jakies regexp dla url.
Ten post edytował marcio 9.09.2010, 14:01:41 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:34 |