Konstrukcja cms'a jak rozwiazac |
Konstrukcja cms'a jak rozwiazac |
21.02.2004, 00:17:08
Post
#1
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
nie wiem czy pisac tutaj czy na Pro, ale tutaj wiecej ludzi zaglada :]
Mam problem, poszukuje rozwiazania, nie konkretnych skryptow. pisze cms'a, niestety nie na obiektach, powodem jest niewystarczajaca wiedza i za malo czasu zeby sie nauczyc. udalo mi sie zrobic zbiór przydatnych funkcji, konfiguracje, podpiolem smarty aby na koncu wyswietlal wszystko. Ale po drodze okazalo sie ze sposob, buforowania strony, aby ja przeniesc w zmiennej do smarty, okazal sie felerny. Jedynym powodem było to ze przy module logowania, ciastka nie byly zapisywane, jak pozniej przemyslalem, sesje takze nie byly zapisywane. Przy proceduralnej strukturze skryptu, nie znalazłem sposobu na wykozystanie smarty lub jakiegos systemu szablonow, na ominiecie buforowania wyniku modulow, bo zawsze trzeba je przekazac jako zmienna do systemu szablonow. Teraz szukam odpowiedzi, jak wykozystac system szablonow, nie kozystajac z bufora, miejac mozliwosc rejestracji sesji i ciastek, miec mozliwosc modolow, nie robiac tego na obiektach. i nie robic systemu szablonow jak w php nuke na funkcjach. Wszystkie pomysly mile widziane. Moze w miedzy czasie cos naprowadzi mnie na trop dobrej motody, z gory dziekuje za wypowiedzi. P.S. mam nadzieje ze nie za bardzo namieszalem -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
21.02.2004, 12:04:51
Post
#2
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
hm... ja mialem podobny problem. Pisze aktualnie CMS'a obiektowo, czyli jedna klasa główna [ silnik ] a reszta jako moduły, tylko narazie nie wiem za bardzo jak mogl bym zrobic includowanie modulow automatycznie - czyli jak wrzuce do katalogu module/ plik mod.news.php to bede mogl urzywac modulu news, ale niewazne, jakos sobie poradze z tym. Mialem problem z tworzeniem zmiennych w sesji w obiekcie, ale rozwiazalem ten problem troche inaczej. Pewnie sa latwiejsze sposoby, ale ... napisalem klase ktora np: po zalogowaniu sie na strone - w obiekcie silnik, to dodaje mi wpis do bazy danych, w obiekcie jest wtedy zmienna pod postacia $this->username [ czyli nazwa urzytkownika ], a poza obiektem juz w index.php urzywam
[php:1:4fe36a64b4]<?php $silnik = new silnik($db); if ( $silnik->username ) $smarty->assign('USERNAME',$silnik->username); ?>[/php:1:4fe36a64b4] pewnie da sie to zrobic jakos latwiej, ale ja nie potrafilem i tak ominolem ta bariere. Teraz sie mecze z zaprojektowaniem modulow, lecz wczesniej jeszcze panel konfiguracyjny zostaje do napisania i zaprojektowania. Ciezka sprawa ten CMS. |
|
|
21.02.2004, 13:08:17
Post
#3
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
właśnie o to chodzi ze nie dam razy napisać slinika w obiektach. Jesli chodzi o to jak zrobi moduły, administracje, to nie ma problemu, ale wyswietlanie komplikuje mi wszystko. Chcialbym pozostac przy smarty, lub jakims innym sysemie szablonow, z oczywistych powodów wygodu tworzenia owych layoutów. Ale z tego co na razie mysle to czeka mnie porazka w tym momencie.
Chyba ze ktoś mnie poratuje jakimś rozwiazaniem -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
21.02.2004, 16:46:03
Post
#4
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
hm.. faktycznie, na obiektach troche latwiej napisac silnik... wiec moze sproboj tak... jak chcesz sprawdzic czy urzytkownik jest zarejestrowany to zrob baze danych
id|sid|login|time gdzie : sid = session_id login = nazwa urzytkownika time = czas zalogowania utworzony np : time() a potem robisz funkcje ktora sprawdza czy w bazie danych jest taki wpis tzn: [sql:1:09f876d845] SELECT login FROM urzytkownicy WHERE sid="$session_id" [/sql:1:09f876d845] gdzie $session_id musi byc identyfikatorem sesji urzytkownika... i masz wtedy login urzytkownika ktory zarejestrowales inna funkcja wczesniej w trakcie logowania... to jest praktycznie to co ja napisalem w poprzednim poscie, ale przerobione na funkcje... musisz jeszcze za kazdym otworzeniem strony sprawdzic czy urzytkownik z dana sesja istnieje, jak nie to tworzysz wpis, jak istnieje to zmieniasz time... i funkcje czyszczaca baze danych piszesz, zeby nie zostawiac smieci.. sprobuj w ten sposob |
|
|
21.02.2004, 19:10:27
Post
#5
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
ace zrobilem obejscie chyba mojego problemu, lecz przez to tworzenie modolow bedzie duzo trudniejsze, a raczej bardziej skomplikowane. Poprostu oddziele warstwe wyswietlania od warstwy rejestracji sesji, tworzenia ciastek i wszystkiego co moze byc pochloniete i nie oddane przez bufor.
modul bedzie skladac sie z plikow: index.php - wyswietlanie modulu admin.php - panel administracyjny pre_index.php - funckje do wykonania przed wyswietleniem modulu pre_admin.php - funkcje do wykonania przed wyswietleniem panelu administracyjnego tutaj teraz trzeba uwarzac, bo odpowiedznie pary plików (index pre_index oraz admin pre_admin) nie kozystaja z siebie nawzajem ale musza sie uzupelniac. to takie moje rozwiazanie. Nastepne bedzie napisaniem nowego silnika na obiektach -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
21.02.2004, 19:50:19
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) |
a ja zrobilbym to tak:
[php:1:9fddb35bc3]<?php // kod php strony ob_start(); include("/modules/news.php"); $content = ob_get_clean(); // dalsza czesc strony $smarty->assign("CONTENT",$content); ?>[/php:1:9fddb35bc3] moze to zadziala |
|
|
21.02.2004, 20:11:26
Post
#7
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
seaquest właśnie dlatego musialem zrobic podzial. mialem prawie tak samo. Sproboj w includowanym pliku dodac sobie funkcje setcookie i zobacz czy utworzylo ci sie ciastko z watoscia. gdyby nie to to bym pozostawil to tak jak mialem
-------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
22.02.2004, 09:56:00
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) |
No mi się tworzy, bo po prostu niczego wcześniej nie wyświetlam. Wszystko co ma zobaczyć user jest najpierw zbierane przez klasę Template (mojej własnej roboty) i wyświetlane dopiero na samym końcu po wykonaniu WSZYSTKICH operacji.
|
|
|
22.02.2004, 13:36:23
Post
#9
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) |
A ja pozwalam modułowi korzystać z systemu szablonów, tak więc jedyne echo pojawia sie w metodzie print_output() klasy template Na początek robie podstawowy szablon, page.tpl, i w nim tylko includuje header i footer jeśli dyrektywa standalone nie jest ustawiona na 1 a między nimi szablon modułu. Nazwa pliku nie jest określona, ponieważ w szablnie odwołuje sie do plików przez handlery, a ich ustawieniam zajmuje sie już silnik. Co dzieki temu zyskuje? Mam bardzo dużą dowolność, bo w momencie kiedy wykonuje sie kod modułu jeszcze nic nie zostało wyświetlone, więc moge ingerować w ustawione wcześniej zmienne szablonów, moge pozbyć sie nagłowka i stopki jeśli zajdzie taka potrzeba itd. I chyba o to chodzi. Po wykonaniu kodu modułu ustawiane są jeszcze zmienne szablonu których moduł nie powinien zmieniać, leci sobie parse i print_output i strona wygenerowana
-------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
22.02.2004, 15:36:01
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) |
No czyli, ze cookies powinny ci działać.... bo ja mam dokładnie tak samo i wydaje mi się, że działają. A poza tym ja mam też klasę Cookie i jej metodę Set. Ona sprawdza czy headery zostały już wysłane. Jak nie, to ustawia cookie za pomocą php'a, a w przeciwnym wypadku za pomocą JS.
|
|
|
Wersja Lo-Fi | Aktualny czas: 15.06.2024 - 12:24 |