[ Jezdimir Lončar @ 24.12.2007. 19:05 ] @
Pozdrav!
Ovako, razmišljao sam nešta i zanima me, pošto pravim templates engine, kako da uradim while petlju u istom?
Znači, da može da se npr. loopuje kroz MySQL rezultate?
Ovo mi treba da bih isti mogao da koristim za nešto više od odvajanja header-a i footer-a od koda....
Ne tražim kod, btw, već samo neku ideju kako bi ovo moglo da se uradi...

I da, molim vas da mi ne predlažete da koristim smarty ili nešto slično...
[ Nemanja Avramović @ 24.12.2007. 21:37 ] @
Verujem da je jedino rešenje da parsiraš template pa da pronalaziš gde je petlja, da je analiziraš i izvršavaš kod koliko treba puta. Ne verujem da postoji jednostavno rešenje.

A zašto ne bi koristio Smarty, ili nešto slično?
[ Jezdimir Lončar @ 25.12.2007. 00:05 ] @
wow...
To definitivno nije jednostavno resenje.


A znao sam da se smarty mora pomenuti.

Pa zato sto mi se nece fino uklapati u framework jer je ogroman, a i 90% njegovih f-ja mi ne treba.
Al ako ne budem umio ovo da sredim, onda cu da koristim ako postoji Smarty lite.
[ vilyu @ 25.12.2007. 07:59 ] @
Da, ali se u Smarty, prema manual-u, ne ucitavaju sve te njegove f-je dok ne budu zahtevane od samog template-a.

A podrzava i kesiranje.
[ Nemanja Avramović @ 25.12.2007. 07:59 ] @
Možeš da probaš FastTemplate i/ili da vidiš kako su oni to odradili, pa možda dobiješ neku ideju.
[ agvozden @ 25.12.2007. 08:21 ] @
Ja sam kreirao svoj template sistem i ugradio u svoj CMS

sintaksu sam postavio slicnu kao smarty tako da mogu vrlo lako preci na njega kada zatreba.

Elem, kapiram da ima dve koncepcije obrade templejta

Jedno ti je kada templejte parsujes, a drugo kada ih kompajliras.


Mislim da je mnogo brze kada se parsuju, tj izvrsi replace. Resenje koje sam primenio za petlju jeste vadjenje bloka html-a iz templejta, njegovo procesiranje koriscenjem array-a i umetanje novog koda (moze imati 0, 1 ili vise ponavljanja) na mesto oznacenog bloka. Blok sam oznacio sa <!-- neki_blok --> <html source><!-- /neki_blok -->. Slicno sam resio i uslove.

Interesantno da je prilikom testiranja portala sa ogromnom bazom (>100Mb) slaba tacka sistema bilo bas persiranje petlji. Kada sam sistem doradio dobio sam zadovoljavajuce performanse. Ovde se mora voditi racuna kada radis sa str_replace, kada sa prostim str_tr ili neke druge regexp funkcije. Strtr obicno daje dobre rezultate, ali kod vecih nizova kod nekih verzija php-a drasticno usporava sistem. Napominjem da sam merio svaki deo koda!

[ Jezdimir Lončar @ 25.12.2007. 09:03 ] @
Citat:
vilyu: Da, ali se u Smarty, prema manual-u, ne ucitavaju sve te njegove f-je dok ne budu zahtevane od samog template-a.

A podrzava i kesiranje.

Znam, radio sam ja sa smarty-jem.
Pa ja sam to rekao zbog njegove velicine, ne zato sto ce da mi optereti sistem.

@Nemanja: pogledacu taj tpl sistem, mada mislim da sam probao sa njim da radim, ali davno.

@agvozden: pazi, ja sam moj tpl sistem uradio na principu:
1. Otvori file
2. Zamjeni promjenjive
3. Ispisi sadrzaj
Za zamjenu sam koristio preg_replace i str_replace.
Probacu na taj nacin da sredim ovo, pa javljam rezultate.

[ Nemanja Avramović @ 25.12.2007. 09:50 ] @
@agvozden: Da li si 100% siguran da je brže sa parsiranjem nego sa kompajliranjem? Koliko ja znam, kod parsiranja ti radiš search/replace i još neke stvarčice, i onda svaki put kad se izvršava skripta prvo se izvršava sam PHP koji parsira tvoj template, dok kad je kompajliranje u pitanju, template "language" se prevodi u PHP language i onda se pri izvršenju skripte samo izvršava već generisani PHP kod. Rekompajliranje se vrši samo kad se izmeni originalni template fajl.
[ Jezdimir Lončar @ 25.12.2007. 18:49 ] @
Najvjerovatnije da ću ja ipak da koristim Smarty ...
Jer nikako da provalim ovo...
Btw, pretpostavljam da će biti posla oko rekodiranja i optimizacije za smarty...
[ agvozden @ 25.12.2007. 20:05 ] @
Nemanja, i samo kompajliranje je na neki način parsiranje.

Ali, da ne bih tvrdio u prazno, implementiraću u jedan svoj sistem smarty - potrebno je samo da modifikujem templejte.

Izmeriću brzinu, mislim da samo tako može potvrditi šta je tačno.

Ili nekom već ima iskustva?
[ Jezdimir Lončar @ 25.12.2007. 20:21 ] @
^ extra. Bas me zanimaju rezultati.
Nego, recite mi jel ce da bude veliki posao rekodirati forum da koristi smarty?
Tj. Isplati li se to raditi na forumu koji vec (solidno) radi ?
[ Nemanja Avramović @ 25.12.2007. 21:05 ] @
@agvozden: Upravo o tome i pričam. Kod kompajliranja se parsira samo jednom (kad se izmeni TPL fajl) a kod parsiranja se to radi pri svakom izvršenju skripte