10. 04. 2007. | #1 |
A suicide bomber!
Certified
|
CMS w/ Smarty, problem...
pozdrav ljudi,
napravio sam veliku gresku, uzeo sam za maturski da radim sajt moje skole i to u obliku cms-a (da bi njima, jelte bilo lakse da menjaju sadrzaj). sad kada sam video koliko tu stvarno ima posla vidim da sam se opako zeznuo, al sta mogu, moram da uradim do kraja... na samom pocetku sam naisao na problem, evo sta me muci: imam tabelu TBL_PAGES gde mi se nalaze sve stranice, izmedju ostalih polja, u toj tabeli se nalaze i polja 'template' i 'content'. 'template' sadrzi naziv smarty sablona, a u 'content' se nalazi sadrzaj stranice koji moze (i uglavnom ce to biti slucaj) da sadrzi smarty kod. e sad, meni nije problem da taj sadrzaj provucem kroz smarty i jednostavno uradim assign('content', $result) i to trenutno radim, ovako: Kôd:
$this->_compile_source('content' . $page['id'], $page['content'], $compiled); ob_start(); $this->_eval('?>' . $compiled); $result = ob_get_contents(); ob_end_clean(); $this->assign('content', $result); da li postoji mogucnost (i kako?) da se kompajlirani $page['content'] ubaci u kompajliranu verziju sablona stranice? e sad, ja mislim da bi tu bilo problema, jer ce vecina stranica koristiti jedan isti template a sve ce imati razlicit sadrzaj, ne znam da li moze nekako da se za svaki $smarty->display() napravi poseban kompajlirani fajl (iako ce biti vise poziva sa istim templateom, al razlicitim sadrzajem) sta mi je ciniti?
__________________
jQuery addict! |
10. 04. 2007. | #2 |
A suicide bomber!
Certified
|
evo sad sam malo procesljao smarty manual i upoznao se sa resource-ima
resio sam problem na sledeci nacin: - prilikom kreiranja novog Page objekta (koji mi extenduje Smarty) registrujem novi resource 'content:' - kada treba da prikazem stranu procitam njen 'content' i stavim ga u promenljivu ($this->content) - pozovem display('content:' . $page['id']) - a iz content_source funckije kao source vratim $this->content problem mi je ovaj timestamp... sta da radim sa njim? da li da dodam 'lastchanged' polje u tabelu ili mi to nije potrebno? (mislim da ovaj timestamp ima veze sa kesiranjem, a mozda i sa kompajliranjem, nisam bash siguran a mrzi me da nocas kopam po smartijevom kodu...)
__________________
jQuery addict! |
10. 04. 2007. | #3 |
profesionalac
Professional
Datum učlanjenja: 22.06.2005
Poruke: 279
Hvala: 14
30 "Hvala" u 19 poruka
|
Glupo pitanje, zar ti nije lakše da uzmeš neki postojeći open source CMS, mislim ukoliko ti nije zadatak da baš ti kreiras CMS. Pregled CMS-ova sa on-line demo-ima možeš naći ovde
p.s. Naravno ovo je predlog ako ti treba brzo rešenje, za tvoje dobro je da prođeš step-by-step kreiranje CMS-a, mnogo više ćeš naučiti .... |
10. 04. 2007. | #4 |
Ivan Dilber
Sir Write-a-Lot
|
smarty ima ugradjeno keshiranje outputa, to ti resava problem za strane koje imaju manje vise statican sadrzaj
__________________
Leadership is the art of getting people to want to do what you know must be done. |
10. 04. 2007. | #5 | |
Goran Pilipović
Sir Write-a-Lot
|
Citat:
Kod "default" sistema sa fajlovima, ako je ukljuceno $smarty->compile_check on za svaki include-ova template proverava datum i vreme poslednje izmene fajla, ako je novije od kompajliranog template - on ga kompajlira ponovo. Kada koristis DB redources, on ne moze da provali datum izmene fajla, zato ti je potreban timestamp. Sve sto ti treba da uradis je da kad god izmenis sadrzaj template (uradis UPDATE u bazi) - da promenis i taj timestamp na UNIX_TIMESTAMP() ili NOW(). To je ako si definisao polje kao unisgned int, ali ako si definisao polje kao TIMESTAMP (procitaj mysql manual) onda je to sve automatski. Znaci da bi koristio database kao resource moras da napravis 4 funkcije: PHP kôd:
onda pozove: PHP kôd:
PHP kôd:
To isto znaci da istovremeno mozes da imas oba sistema, pa recimo cuvas header i footer u odvojenim fajlovima na disku: PHP kôd:
Poslednja izmena od bluesman : 10. 04. 2007. u 14:35. |
|
10. 04. 2007. | #6 |
A suicide bomber!
Certified
|
@Mr.Paja:
pa mogao sam i da uzmem neki open source cms (cms made simple npr) jer me je profesor samo bledo pogledao kada sam rekao da cu da radim cms u php-u (stvarno je sramota ko sve predaje informatiku kod nas, ali to je za drugu temu...) i znam da niko zivi nece da gleda kod koji sam uradio (sem eventualno grupe djaka koje bih ja okupio da rade na odrzavanju sajta kad ja odem iz skole). ali (kao sto si rekao) za "moje dobro" je bolje da sam uradim cms (ne treba mi neki ultra-mega-giga cms sa tonom modula, vec najjednostavniji moguci)... @ivanhoe: znam za keshiranje ali sam hteo i da mi cuva kompajlirani kod (sto bi, po mom misljenju, trebalo da jos malo ubrza prikaz strane) @bluesman: hvala na odgovoru, mada sam to sam skontao danas kada sam pogledao malo bolje o cemu se radi (sinoc oko 4 am me bash mrzelo da kopam po smartiju ), i logicno je da se timestamp za to koristi mada meni to nocas nije bilo tako logicno (bio sam pospan, rekoh vec ) tj mislio sam da to ima veze sa kesiranjem... hvala svima na odgovorima
__________________
jQuery addict! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Smarty 3 | bluesman | PHP | 26 | 01. 01. 2010. 21:03 |
smarty - assign_by_ref | ivanhoe | PHP | 2 | 14. 10. 2009. 22:46 |
Problem smarty i poseban lang fajl sa latinicnim prevodom i nasim slovima? | MojNalog | Sva početnička pitanja | 7 | 06. 06. 2008. 15:13 |
(Smarty) Problem - kategorije, forumi | Kenny | PHP | 3 | 16. 01. 2007. 21:13 |
Smarty problem na OSX, browser otvara blank stranu | mungos | PHP | 8 | 04. 07. 2005. 13:56 |