Anti-template... intr-un sens
Postat la 13 Mar 2008. 4 comentarii... Comentarii
Am scris in mai multe articole [prin mai multe locuri] ca sunt anti-template [ma rog, anti-manele, anti-tot-ce-ma-enerveaza] si as vrea sa se inteleaga sensul bun al acestei idei... pentru ca prin template se pot intelege mai multe [de fapt, doua] lucruri
Ma intreba cineva acum o vreme de ce nu folosesc template-uri si i-am scris ca sunt anti-template. Sunt anti-lucruri-facute-de-altii-si-folosite-de-mine, in sensul ca nu mi-am facut blog "de la" wordPress, "de la" blogspot sau "de la" Drupal [da, e facut de mine, nu ma mai tot intrebati!] pentru ca mi se pare ca e ca si cum as lua ceva facut de altul si l-as modifica [de fapt, nu mi se pare, asa e]... si, am mai explicat, nu pentru ca as fi eu mai inteligent decat wordPress, google sau drupal ci pentru ca imi place sa fiu unic, sa am lucruri personale. Am discutat despre asta undeva aici si nu are rost sa ma repet de prea multe ori.
Acum, celalalt sens al lui "template" la care, din coincidenta, contribuie si Smarty este acela de a crea o pagina web bazata pe un template HTML. Cei din domeniul web stiu ca e vorba de fisiere denumite initial cu extensia .TPL [eu le pun extensia PHP sau HTML, ca tot dracul ala e] pe care se poate baza un site si al carui design e foarte simplu de schimbat si astfel se permite adaugarea de teme si bla bla bla.
Pentru cei ce nu stiu, ideea e de a crea un schelet din cod HTML pe care apoi il preia un cod PHP si face ce vrea cu el. Exemplu concret:
<head><title>{THE_TITLE}</title> {SOME_META_TAGS}</head>
<body><h1>{THE_CONTENT_FOR_H1}</h1>
<p>{THE_CONTENT_FOR_P}</p></body>
</html>
Pentru fisierul de mai sus [denumit, sa zicem, exemplu.tpl] se face un script PHP cu care developer-ul ia continutul respectiv [cu functia fread, de exemplu] si face un simplu replace in acesta pentru a schimba ceea ce ne intereseaza. Ne intereseaza sa schimbam ce se afla intre "{" si "}" ca si valori fixe... adica inlocuim {THE_CONTENT_FOR_P} cu "hello world!" si {THE_CONTENT_FOR_H1} cu "my header" si apoi afisam in pagina noastra template-ul cu valorile inlocuite... Afisarea este transparenta pentru vizitator, intrucat el nu stie componentele noastre si nu stie ce se afla in spatele unui site din punct de vedere al programarii... dar pentru un developer e foarte comod sa faca schimbari.
In fine, sper ca s-a inteles ideea mea, eu folosesc sistemul cu template [am clasele mele si metode proprii] si imi place foarte mult ideea [nu mi-ar fi dat mie prin cap asta, ever!] insa nu folosesc Smarty pentru ca nu-l stiu, si pentru ca m-am obisnuit cu metodele mele, nu pentru ca as fi anti-smarty.
Eh... sper sa nu-mi furati meseria... ![]()
Spor la invatat si programat!
Pareri peste opinii... Comenteaza si tu!
postat de Saitek la 14 Mar 2008, 5:11
Da e ok..oricum smarty e to slow dar e bun.Dar de ce nu faci asa <{$dasdad}> pentru ca daca lasi asa {} cand o sa ai JavaScript o sa iti "compileze" si ce ai tu pentru sistemul tau de template engine,acuma depinde si ce face sistemul tau.Bafta.. ![]()
postat de vectorialpx la 14 Mar 2008, 5:28
javascript e un limbaj de programare client-side... pe cand PHP e server-side.
Cum crezi ca s-ar incurca? ![]()
poate fi si fara "{" si "}" dar ideea e sa nu se confunde cu textul, nimic mai mult
postat de Saitek la 16 Mar 2008, 4:19
Nu la aia m-am referit...m-am referit ca sistemul tau de template engine..sa nu compileze si JavaScript ca de obicei al javascript ai si cu {continut} si sa nu iti compileze acel continut..u got it now
postat de vectorialpx la 16 Mar 2008, 7:05
nope! pai, daca php face replace la {continut} cu "content din pagina, poate chiar si js" atunci js nici macar nu va stii de existenta lui {continut}.. pentru ca totul pleaca de la server [acolo se interpreteaza totul] si cand ajunge la client ajunge cu tot cu replace... user-ul nu apeleaza template.tpl ci fisierul php ce face interpretarea... poate nu inteleg ce zici. Eu nu am un "sistem de template", am o clasa care face replace si pune in pagina totul asa cum trebuie... la client ajunge in faza finala
edit // am inteles intr-un final ce vrei tu sa zici... numele de variabile sunt date de mine, deci nu sunt atat de imbecil incat sa pun in template {content} si in js tot {content}... si oricum, eu nu pun cod js in interiorul template-ului [ar fi o prostie], de obicei pun codul js in fisiere externe pe care le includ in meta... in nici un caz nu exista riscul asta ![]()
