![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Myślę nad tym, jak rozwiązać problem z modułowością systemu CMS oraz szablonami. Ważne, by rozwiązanie było optymalne i wydajne. Przedstawię 2 tezy (lecz może ktoś ma lepszy pomysł?). Nie piszcie o Smarty, Autotheme, itp.
Rozpoczynanie od bazowego pliku index.php Tak jak obecnie. Większość podstron dołączanych jest z 1 głównego pliku index.php. Plusy: + Nie trzeba wpisywać kodu odp. za wyświetlenie szablonu w każdym module + Przejrzystszy plik szablonu (dołączany w index.php), a szablon dołącza plik wybierający moduł lub kategorię Minusy: - Dłuższe adresy stron - Brak większej ingerencji w kod HTML (m. in. tytuł strony) Dołączanie pliku jądra przez niezależne moduły Są pliki modułów: index.php, news.php, art.php, itp. Od nich będzie zależało, czy dołączą później plik odpowiedzialny za wyświetlenie pełnej oprawy graficznej, czy tylko samego środka (bez menu i nagłówka). Plusy: + Większa ingerencja w kod (przed <html>, w <head>, <title>, <meta> itp.) + Trochę krótsze adresy Minusy: - Bardziej skomplikowana sprawa z szablonem Które rozwiązanie preferujecie? Uargumentujcie i uzasadnijcie swoją wypowiedź. Ostatnio umożliwiłem wtyczkom dołączanie pliku head.php w sekcji <head> (jeśli istnieje odpowiedni plik na podstawie parametru $_GET['co']). Nie wiem, czy to dobre rozwiązanie. Mam nadzieję, że próbowaliście różnych sposobów i wiecie, który jest dobry a wydajny. DODANE: Teraz przyszło mi do głowy rozwiązanie - index.php?art=5, index.php?file=5 (lecz może przez to skrypt polecieć na wydajności?). Ten post edytował WebCM 10.04.2007, 21:52:18 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Ja preferuję OOP + MVC - Object Oriented Programing + Model View Controller.
Oddzielanie warstwy prezentacji od warstwy logicznej + wielojęzyczny mod_rewrite. edit> Ja zaczynałem od pierwszego rozwiązania. - od bazowego pliku index.php wydaje mi się że dzięki temu łatwiej było mi sie przerzucić na to co stosuję teraz. Ten post edytował orglee 10.04.2007, 21:43:32 |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Minusy: 1. - Dłuższe adresy stron 2. - Brak większej ingerencji w kod HTML (m. in. tytuł strony) 1. nice urls i masz krotkie example.com/news/show/3 2. tytul nadal mozesz zmienic, w widoku/szablonie/akcji ustawiasz $tytul_strony i w glownych szablonie wstawiasz go do <title> jesli zostala taka zmienna zdefioniowana |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 36 Dołączył: 28.08.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
DODANE: Teraz przyszło mi do głowy rozwiązanie - index.php?art=5, index.php?file=5 (lecz może przez to skrypt polecieć na wydajności?). a nie lepiej zrobic to w ten sposób? index.php?action=art&id=4 index.php?action=news&id=6 wtedy najpierw wczytujesz zawartosc zmiennej action, wybierasz odpowiedzialny za dana akcje modul... odrzucajac wszystkie inne nie pasujące... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował bogdan89 10.04.2007, 23:39:22 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zasady MVC są zbyt ogólne - nie dla każdego projektu - więc ich w pełni nie wykorzystam. Trzeba jeszcze rozwiązać sposób wyświetlania szablonów.
Wziąłem się za zmianę budowy skryptu, lecz tu też są schody. Mam nadzieję, że mi doradzicie szybkie, wydajne i optymalne rozwiązanie. Aktualnie stosuję: Kod Index.php - dołącz kernel.php (podstawowe pliki) - dołącz plik modułu - mod/(moduł).php ---- zazwyczaj: pobierz dane z bazy, zdefiniuj stałe TITLE i FILE - pisz "<html>...<title>(stała TITLE)</head><body>" - dołącz plik szablonu (wnętrze <body>) ---- dołącz plik stałej FILE (zdefiniowanej przez plik modułu) - pisz </body></html> Rozwiązanie już pozwala na zmianę tytułu, używanie nagłówków i dodanie treści do <head>, lecz jest o tyle niewygodne, że trzeba używać 2 plików dla modułu - chyba, że o to chodzi. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Np. aby wyświetlić listę użytkowników, trzeba najpierw dołączyć plik, który pobierze dane, a potem inny, który wyświetli listę - czyli plików będzie zdecydowanie więcej, chyba że część się złączy. Co jednak myślicie o startowaniu z art.php, file.php, users.php zamiast z index.php? Wtedy bardziej pasowałby tu prosty system szablonów (np. ze zmienną {content}, od której rozwaliłoby się szablon funkcją explode() na 2 części) lub dołączanie 2 plików - np. header.php i footer.php. Ewentualnie jeszcze można w pliku modułu definiować funkcję BODY() i wywoływać ją w pliku skórki - już o 1 mniej, ale za to większe zużycie pamięci w przypadku większych modułów i konieczność definiowania globalnych zmiennych, np. CFG, LANG... Tak właściwie jądro (wybór użytkownika, języka, itp.) jest w pliku kernel.php, więc nadaje się i jedno i drugie rozwiązanie. Tylko pytanie - które jest bardziej praktyczne? Wcześniej było tak: Kod Index.php Kilka plików (np. admin, login) jest niezależnych od index.php.- dołącz kernel.php - pisz "<html><head>..." - jeśli plugins/(co)/head.php istnieje, dołącz go - pisz "</head><body>" - dołącz plik szablonu --- dołącz d.php ------ dołącz plik modułu lub odpowiedzialny za wyświetlenie kategorii - pisz "</body></html>" Rozwiązanie było o tyle dobre, że nie wymagało umieszczania dodatkowego kodu, wyświetlającego szablon lub definiującego zmienną FILE - wystarczył sam parametr CO w adresie, by dołączyć odpowiedni moduł. Może lepiej do niego powrócić? Uniemożliwia on jednak dostęp do nagłówków i zmianę tytułu z poziomu index.php. Ten post edytował WebCM 5.05.2007, 11:55:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 00:05 |