[ Ilija Studen @ 01.03.2004. 05:53 ] @
Primetio sam da neke srkipte template-e skladiste u bazu, izvlace ih i kompajliraju, medjutim, meni nije jeasno kako je to odradjeno...

Moze li neka pomoc oko toga?

Pozdrav
[ bluesman @ 01.03.2004. 13:27 ] @
Čuvaju se templates kao obični BLOG, pa se onda preko DB resource čitaju i kompajliraju. Imaš sve u smarty manualy. Samo mislim da je to previše sporo.
[ broker @ 01.03.2004. 14:10 ] @
Meni je to cak i neprakticno. Previse ogranicava pristup sablonima za dizajnere.
[ Gojko Vujovic @ 01.03.2004. 14:42 ] @
Citat:
bluesman:
Čuvaju se templates kao obični BLOG..


BLOG ili BLOB?

Ako prvo, na šta si mislio?
[ NetworkAdmin @ 01.03.2004. 21:48 ] @
template i nije nista drugo nego string koji poslije klasa renda u kod...
[ bluesman @ 01.03.2004. 23:51 ] @
Citat:
Gojko Vujovic:
Citat:
bluesman:
Čuvaju se templates kao obični BLOG..


BLOG ili BLOB?

Ako prvo, na šta si mislio?

Šta ti misliš na šta sam mislio? :-))

Izvinjavam se zbog slovne greške, valjda mi ovi blogovi nikako ne izbijaju iz glave, opšte mi nije jasan koncept online dnevnika koje svi čitaju :-)
[ bluesman @ 02.03.2004. 00:01 ] @
Citat:
broker:
Meni je to cak i neprakticno. Previse ogranicava pristup sablonima za dizajnere.

To je dobro za neki CMS koji generise templates, pa za one koje mrzi da prave neki pravi tpl I/O koji bi sve pisali i citali u fajl, verovatno postoji i opcija da se cuva u bazu. To jednostavno znaci da se svaki put template kompajlira, sto je verovatno slicno performansama koje dobijate ako ukljucite force_compile, a to je jako sporo i totalno onda gubi svrhu i smarty se vraca na performanse konkurentskih klasa.

// Valjda nisam nigde napisao BLOG? :-)
[ Ilija Studen @ 02.03.2004. 01:01 ] @
Kad smo vec kod performansi onda jos jedno pitanje. Koliko bi ovakav model uticao na vreme izvrsavanje skripte:

- obrasci se smestaju u jedan dir i nakon prvog izvrsavanja importuju u bazu, a zatim kompajliraju (jedanput)
- umesto da koristim compile_check samog smarty-ja da napisem mali blok koji ce proveravati da li su obrasci u spomenutom direktorijumu novijeg datuma od onih u bazu, pa ako jesu da importuje nove i kompajlira ih

Dobra strana cele price je sto ce se obrasci relativno retko menjati... A opet, sve se desava samo u jednom izvrsavanju....... Query se "elegantnim" indeksiranjem moze lepo optimizovati, samo me nervira to (rekurzno =] ) skeniranje direktorijuma.

BTW: Baza je mozda jedino resenje jer na taj nacin mogu da obezbedim da se bez preteranog mucenja svi obrasci nadju na istom mestu (projekat na kome radim zahteva modularnost, tj. da se u bilo koje doba dana ili noci mogucnosti skripte mogu prosiriti instaliranjem ili konfigurisanje modula, a svaki modul koristi obrasce :D ).

Ili da napravim takav module installer koji ce obrasce pri samoj instalaciji prebaciti na odgovarajuce mesto?????

Ako je neko radi nesto slicno ovome stvarno bih voleo da cujem na koji nacin je resio problem???
[ -zombie- @ 02.03.2004. 01:28 ] @
ilija, moram da priznam da te uopšte nisam razumeo što se tiče tvog razloga za smeštanje šablona u bazu. ajde probaj ponovo da objasniš. ;)

Citat:
bluesman:
To jednostavno znaci da se svaki put template kompajlira, sto je verovatno slicno performansama koje dobijate ako ukljucite force_compile, a to je jako sporo i totalno onda gubi svrhu i smarty se vraca na performanse konkurentskih klasa.

// Valjda nisam nigde napisao BLOG? :-)


prilično sam siguran da se u tom slučaju kompajliranje ne vrši svaki put. zato uostalom smarty pored samog koda šablona (resursa) traži i meta-podatake (timestamp..).
[ Ilija Studen @ 02.03.2004. 01:58 ] @
OK, potrebno je da se napravi okruzenje koje cu pruziti mogucnost instalacije modula. U sustini, aplikacija koju pravim mora da pruzi: konekciju na bazu, template sistem, config sistem, visejezicnost, razne alate (XML parser, text manipulatore i slicno). Takodje, naglasak je na modulima posto posetioci vide ono sto im moduli pruze, a ono sto ja pravim stoji u pozadini i omogucava da se moduli lako programiraju i lepo rade. Nista posebno, samo prilicno kompleksno :)

Da ne bih morao ljude da teram da pri instalaciji prebacuju rucno sve fajlove gde im je mesto (template ovde, lang onde, slike vamo, XML tamo...) oni ce uplodovati jedan dir (ili arhivu, jos nisam odlucio) u kome se sve nalazi i koja predstavlja modul sa svim definicijama (koje table mu trebaju, koje konfiguracione opcije da kreiram sa default vrednostima, dozvole za pristup itd....). Skripta ce (po nekoj konvenciji) znati gde da sta da trazi (lang u /lang direktorijumu XML u /data direktorijumu i sl.). Medjutim, posto Smarty-ju ne mogu reci da se obrasci nalaze u X razlicitih direktorijuma potrebno mi je da se nadju na jednom mestu...

Dakle, jedno resenje je da ih sve trpam u jednu tabelu baze, a drugo da napravim installer koji ce ih prebaciti u templates direktorijum... Sad pitam koje od ovih resenje je bolje...............
[ -zombie- @ 02.03.2004. 02:33 ] @
pa za to imaš više mogućih rešenja.. istraži odavde http://smarty.php.net/manual/en/template.resources.php

možeš recimo da napraviš simbolički link u ./templates direktorijumu na direktorijum za šablone za specifični modul. npr, kada dodaješ modul "bluethingie" linkuješ "./templates/bluethingie/" na "./modules/bluthingie/templates", ili slično..

onda možeš da napraviš i poseban resurs za svaki modul, tako da šablone za taj modul pozivaš sa "bluethingie:/some-template.tpl" ili slično.

a možeš da imaš i svoj jedinstveni resource za sve module koji bi samo mapirao fajl sistem drugačije. znači mapirao bi "modules:/bluethingie/some-template.tpl" u "./modules/bluethingie/templates/some-template.tpl".

ovo poslednje je možda i najbolje rešenje..
[ Ilija Studen @ 02.03.2004. 03:46 ] @
E to nisam znao. Hvala zombie, dao si mi temu za razmisljanje (i citanje i experimetisanje =] )...
[ broker @ 02.03.2004. 22:08 ] @
I ja sam o tome dosta razmisljao i zakljucio da je najelegantinje ipak da s izbegne baza.

Smarti kad dobije sablon i iskompajlirs ga opet ce u kes da stavi iskompajliranu datoteku. Mislim d aneki programeri pribegavaju bazi kao skladistu kako bi izbegli probleme sa pronazalenjem daoteka na disku.

Taj problem sam resio tako sto sam za svaki modul uveo jednu datoteku sa definicijama modula u koijma su dati svi potrebni parametri da aplikacija pronadje i koristi taj modul. U definiciji izmedju ostalog pise i gde se datoteke koje pripadaju modulu nalaze. Prilikom instalacije modula potrebno je glavnoj aplikacijai samo reci gde se nalazi modul, a onda sve ostalo cita iz definicije modula.

Funkcionise vrlo lepo, da cuknem u drvo. Svaki modul je u sopstvenom direktorijumu, moze se nalaziti bilo gde u hijerarhiji direktorijuma, a u modulu su i sve spoljanje definicije kao sto su sabloni ili recnici za visejezicnu podrsku pa cak i pravila za privlegija korisnika u okviru modula. Premestanjem modula premestaju se i sve pripadajuce datoteke i sve sto je potrebno to je da se aplikaciji prijavi nova pozicija modula. Instalacija je zaista vrlo jednostavna.

Dodatna pogodnost je sto je i administrativni modul kao podmodul takodje odmah dostupan i aplikacija ga moze prikazati u administracionom delu sajta.

Sto se samih sablona tice, dodatno sam napravio mehanizam u smartiju koji u letu menja sablone tako da sve putanje u okviru njih prilagodjava realnoj poziciji generisanig dokumneta koij se prikazuje korsiniku. Tako sam resio prilicno jeziv problem da ono sto dizajner napravi ne moze odmah da radi u smartiju dok se eksternedatoeke (bitmape na primer) ne premeste negde gde ce ih izgenersiani dokument naci, kao i to sto relativni linkovi upisani u sablon takodje ne rade u genersianom dokumentu. Kodmene posto se to sve u letu koriguje u samom dokumentu, sabloni i svi eskterni dokumenti ostaju gde su i vidi ih i dizajner i sam smarti kako treba. Ovo me je preporodilo.

Bitna je stvar i to sto za neke jednostavne sajtove nije potrebna baza, neki hosting serveri i ne nude bazu ili je nude uz doplatu tako da to odmah ogranicava koriscenje celog sistema koji za sam svoj rad insistira na koriscenju baze.
[ leka @ 03.03.2004. 09:31 ] @
Ideja stavljanja smarty sablona u bazu je zapravo ODLICNA. Naravno,
bitno je da se sabloni stave u "specificne" tabele. - Da pojasnim -
znate dobro da maltene sve moderne baze imaju lepu i korisnu (u ovom
slucaju POSEBNO KORISNU) mogucnost da se tabela drzi na heap-u (u memoriji).
Dakle, ako osoba zeli da stavi smarty template u MySQL tabelu koja je
HEAP tipa, to je po licnom misljenju ODLICNO resenje - tako ja radim
izmedju ostalog... :)
[ broker @ 03.03.2004. 12:55 ] @
Za koga je odlicno? Voleo bih da cujem prednosti i mane takvog pristupa.
[ Gojko Vujovic @ 03.03.2004. 13:58 ] @
To što je tabela HEAP tipa neće je činiti mnogo bržom ako se radi o manjoj količini podataka i ako je uključeno asinhrono pisanje na disk. Baza će to i onako keširati i kveriji će se raditi skroz iz memorije, bez pristupanja disku.