16 técnicas smarty scripting para deixar seus templates ainda mais inteligentes

26
s c ripting p ara deix a r s eus te m p l a t es ai n d a m a is in t eli g ente s I go r E scob ar  em D ese nvol vi m en to Li ng ua ge ns  q u a r t a- f eir a , 1 3 d e m a i o d e 2 0 0 9 0SHARES|  Facebook   A-A+ Uma compilação de dicas e técnicas muito úteis para se programar em Smarty Template Engine e construir dinâmicos e inteligentes templates para programadores PHP e designers de templates Uma !tima "onte para #uem est$ começando a codi"icar Smarty Templates Ten%o cer te&a #u e economi&ar$ muito tempo de procura ' (e-utili&ação de c!digo HT)* Utili&e a tag { c a p t i o n } para graar dentro de uma ari$el #ual#uer sa,da de %tml #ue esti er entre o {c a p ti o n } e o {/c a p ti o n } muito útil #uando #ueremos re-utili&ar o mesmo c!digo em $rios pontos do nosso template .o e/emplo a0ai/o estamos atri0uindo toda a sa,da HT)* para a ari$el $nav 1 2capture name34na45 6ul7 2section name3item loop38na5  6li76a %re"3928na:item; url59 title3928na:item; title59728na:item; la0el56< a76<li7 2<section5

Upload: jose-soares

Post on 09-Mar-2016

18 views

Category:

Documents


0 download

DESCRIPTION

16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

TRANSCRIPT

Page 1: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 1/26

scripting para deixarseus templates aindamais inteligentesIgor Escobar emDesenvolvimento Linguagens 

quarta-feira, 13 de maio de 20090SHARES|

 Facebook

 

 A-A+Uma compilação de dicas e técnicas muito úteis parase programar em

Smarty Template Engine e construir dinâmicos einteligentes templatespara programadores PHP e designers de templatesUma !tima "onte para#uem est$ começando a codi"icar Smarty TemplatesTen%o certe&a #ueeconomi&ar$ muito tempo de procura

' (e-utili&ação de c!digo HT)*Utili&e a tag {caption}para graar dentro de umaari$el #ual#uer sa,da de %tml #ue estier entreo {caption}e o {/caption} muito útil #uando#ueremos re-utili&ar o mesmo c!digo em $rios pontosdo nosso template.o e/emplo a0ai/o estamos atri0uindo toda a sa,daHT)* para a ari$el$nav1

2capture name34na456ul72section name3item loop38na5  6li76a %re"3928na:item;url59title3928na:item;title59728na:item;la0el56<a76<li72<section5

Page 2: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 2/26

6<ul72<capture5)ostra o conteúdo da caption $nav1

28smartycapturena5=oc> pode tam0ém setar a sa,da da caption para umaari$el de template1

2capture name34na4 assign34namenu45Para e/i0ir1

28namenu5?uando o “name”não é especi"icado@ o nome da

caption automaticamente é setado como “default”1

28smartycapturede"ault5 Passando ari$eis para su0-templatesUsando $GLOBALSia {php}@ para n!s@programadores@ resole o pro0lema@ certoB )as érecomendado pelos designers de template #ue oc>sutili&em o {capture}Cs designers de templates não #uerem colocar as suas

mãos em c!digoPHP@ então@ amos "alar em uma linguagem #ue elestam0ém entendamArquivo header.tpl

2capture name34columns45D2<capture5Então, arquivo index.tpl

2include "ile34%eadertpl45

2i" 8smartycapturecolumns 33 4D45

Page 3: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 3/26

2<i"52include "ile34"ootertpl45Pode até mesmo acessar a variável dentro do

footer.tpl

2i" 8smartycapturecolumns 33 4D45 2<i"5D ncluindo su0-templates utili&ando

delimitadores padrão A#ui temos um pro0lema comum #uando #ueremosinserir ari$eis detemplate dentro de ar#uios Faascript ou GSS oelimitador 2 e 5 éutili&ado por am0as linguagens@ então@ amos tercon"litos

maintpl

2p%p58smarty 3 neI SmartyJ8smarty-7le"tKdelimiter 3 46L--24J8smarty-7rig%tKdelimiter 3 45--74J8smarty-7assignM4si&e4@ 4DNp/4OJ8smarty-7assignM4pre4@ 4reat4OJ8smarty-7assignM4post4@ 4Templates4OJ8smarty-7displayMmessagetpl4OJ2<p%p5messagetpl

Page 4: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 4/26

6style type39te/t<css976L--% 2"ont-si&e1 6L--28si&e5--75--76<style76%7Qelcome to t%e Qorld o" 6L--28preRcapitali&e5--7 Smarty 6L--28postRcapitali&e5--76<%76script language39Faascript9

type39te/t<Faascript9 76L--"unction IelcomeMO2  alertM4Qelcome to t%e Qorld o" 6L--28preRcapitali&e5--7 Smarty 6L--28postRcapitali&e5--74OJ

5IelcomeMOJ--76<script7C c!digo acima mostra o te/to Qelcome to t%e Qorldo" reat SmartyTemplates com uma "onte de taman%o Np/ e alerts

com o mesmo te/to e0ugando Smarty TemplatesC Smarty tem um console para de0ug #ue permite #ueoc> "acilmentee/amine ari$eis de template@ templates inclu,dos@ eari$eis decon"iguração para o template atual

Page 5: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 5/26

Para atiar o console de de0ug@ de"ina apropriedade$debuggingdo smarty como true1

6Bp%p

8smarty 3 neI SmartyJ8smarty-7de0ugging 3 trueJB7Se a Fanela do de0ug console não a0rir #uando ap$gina "or carregada@ sete apropriedade$debug_tplpara o seu camin%o pat% Porpadrão@ Smarty ai ol%ar para o de0ugtplno SMARTY_DIR Este ar#uio é inclu,do nasdistri0uiçVes do Smarty e pode ser ac%ado na pastali0s<C Feito mais "$cil e mais r$pido para %a0ilitar ode0ugging console é colocando a tag {debug}nos seus templates Wunciona da mesma "orma .o

entanto@ sso s!permite isuali&ar todas as ari$eis dispon,eis dentrodo escopo dotemplate atualExemplo:

6%'728title56<%'72de0ug5

6p728description56<p7X Acessando (e#uest =aria0les iaSmarty Templates(e#uest =aria0les do PHP podem ser acessadas iatemplates Smarty@utili&ando a ari$el reserada 28smarty5 (e#uest

=aria0les@ incluindo

Page 6: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 6/26

8KET@ 8KPCST@ 8KGCCYE@ 8KSE(=E(@ 8KE.=@ e8KSESSC.Exemplos:

=alor de sa,da da ari$el 8KET:Zpage[; da U(*28smartygetpage5=alor de sa,da da ari$el 8KPCST:Zpage[; do"ormul$rio

28smartypostpage5Sa,da de uma ari$el de coo\ie@ 8KGCCYE:Zstatus[;

28smartycoo\iestatus5Sa,da de uma ari$el de seridor@8KSE(=E(:ZSE(=E(K.A)E[;

28smartysererSE(=E(K.A)E5Sa,da de uma ari$el do am0iente do seu sistema@8KE.=:ZPATH[;

28smartyenPATH5Sa,da de uma ari$el de sessão@ 8KSESSC.:Zid[;

28smartysessionid5Sa,da da ari$el username de todos os arrays FuntosMget<post<coo\ies<serer<enO

28smartyre#uestusername5

Page 7: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 7/26

N Acessando ari$eis de templates iascript PHP

=oc> consegue acessar ari$eis do smarty utili&andoo métodoget_template_vars()no seus scripts PHP .o entanto@ as ari$eis detemplate s! estãodispon,eis depois do tempo de e/ecução einterpretação dos seustemplates epois deste tra0al%o@ as ari$eis sãodiretamente

incorporadas para serem acessadas ia PHP utili&andoa tag {php}ou incluindo um ar#uio p%p utili&ando uma

tag de "unção 0uilt-in{include_php}Gonsidere o seguinte template1

2assign ar34title4 alue34Smarty Templates45

 Acessando as ari$eis depois da e/ecução dotemplate1

<< E/ecuta o template e retorna o resultadopara uma ari$el8page 3 8smarty-7"etc%M4inde/tpl4OJ

<< =ai mostrar 9Smarty Templates9ec%o 8smarty-7getKtemplateKarsM4title4OJ

<< Assina um alor para a ari$el title8smarty-7assignM4title4@ 4T%e reat Smarty

Templates4OJ

Page 8: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 8/26

<< =ai mostrar 9T%e reat Smarty Templates9ec%o 8smarty-7getKtemplateKarsM4title4OJ

<< =ai e/i0ir todas as ari$eis assinadasdentro do templatearKdumpM8smarty-7getKtemplateKarsMOOJE/istem dois Feitos de acessar ari$eis de tamplatedurante a e/ecução do template utili&ando a tag 2p%p51

2p%p5<< using 8t%is-7KtplKarsec%o 8t%is-7KtplKars:4title4;J

<< using 8t%is-7getKtemplateKarsMO met%od

<< t%e aria0le 8t%is@ is a smarty o0Fectec%o 8t%is-7getKtemplateKarsM4title4OJ2<p%p5] Su0stituição de ariaeis em stringscom aspas duplasWunciona muito parecido com o Feito #ue oc> "a& em

PHP #uandoe/istem ari$eis dentro de aspas duplas e e/i0ir osseus respectiosalores dentro dentro destas aspasSubstituição simplesGom o 8"ilename tendo o alor "ooter@ o atri0uto "ileai apresentar o alor templates<"ootertpl

Page 9: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 9/26

2include "ile39templates<8"ilenametpl95C c!digo acima não "unciona com aspas simples1

2include "ile34templates<8"ilenametpl45Array Indexes

 Assumindo #ue $module[1]contém userKmenu1

C $module[1]acima ai ser su0stitu,do poruserKmenu e ser$ tradu&ido dentro deuserKmenutpl

2include "ile398module:';tpl95Gom o alor de 8inde/ igual a '@ o c!digo a0ai/o ai"a&er algo parecido com o c!digo de acima .este casoane/o a 0ac\tic\s

2include "ile39^8module:8inde/;^tpl95

Associative Arrays Assumindo #ue $item[‘name’]seFa igual a Gomputer1 A ari$el 8itemname a0ai/o ai ser su0stituido deGomputer para Gomputer unit

2assign ar34la0el4 alue39^8itemname^

unit95Gom o alor de 8prop igual a name@ o #ue temos aseguir é e#uialente ao c!digo anterior

2assign ar34la0el4 alue39^8item8prop^unit95

Objects

Page 10: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 10/26

Temos uma propriedade dentro de um o0Feto c%amada80oo\-7title #ue contém Smarty Templates

C 80oo\-7title acima ai assumir o alor de SmartyTemplates mas 8msg tem o alor )y SmartyTemplates 0oo\

2assign ar34msg4 alue39)y ^80oo\-7title^0oo\95Gom a 8property igual a title@ 8msg ai apresentar omesmo alor

2assign ar34name4 alue39^80oo\-78property^95Nota:Sempre ane/e nomes de ari$eis com M^O

#uando elas conterem pontos MO@ o0Fetos por re"er>nciaM-7O@ ou#uando usarem inde/ aria0les para arrays

_ )anuseando ari$eis de template em0ranco=ari$eis em 0ranco podem #ue0rar o layout da suata0ela =ari$eiscom alores em 0ranco podem ser um pro0lema emmuitos casos@ por e/emplo@ se alguma imagem do seu layout ier de umaari$el detemplate@ imagine esta imagem rece0endo o src em0ranco toda e& #uealguém acessa sua p$ginaB )uitas re#uisiçVes

perdidas@ sem motioB

Page 11: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 11/26

Use a tag {if}para gerar uma sa,da padrão sempre #ueuma ari$el estier em 0ranco Cu use o atal%o@ Aari$el modi"icadora de"ault

Gonsiderando o c!digo a seguir@ e/i0ir$ dentro dacélula de uma ta0ela1

6ta0le76tr76td72i" 8user e# 445  `n0spJ

2else5  28user52<i"56<td76<tr76<ta0le7O shortcut:

6ta0le76tr76td728userR

de"ault14`n0spJ456<td76<tr76<ta0le7Esse é o c!digo #ue maniputa apropriedadesrcdo img1

6img src392i" 8imageKurl e#445<images<de"aultpng2else528imageKurl52<i"59<7Cu simplesmente1

6img src3928imageKurlRde"ault14<images<de"aultpng459 <7C s%ortcut pode ser 0em limpo ol%ando assim@ somenteneste tutorial@mas se oc> tier o %$0ito de usar SE)P(E nos seus

templates@ ao longodo tempo isso pode ser meio "eio de ser er

Page 12: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 12/26

Por exemplo, considerando o código abaixo:

6a %re"3928imageKurlRde"ault14<images<de"aultpng45976img src3928imageKurlRde"ault14<images<de"aultpng459 <76<a76p7Pat%1 28imageKurlRde"ault14<images<de"aultpng456<p7E@ "inalmente@ a#ui est$ um método 0em mais limpo

utili&ando a tag{assign}com de"ault2assign ar34imageKurl4 alue38imageKurlRde"ault14<images<de"aultpng456a %re"3928imageKurl5976img src3928imageKurl59 <76<a7

6p7Pat%1 28imageKurl56<p7 Passando ari$eis para su0-templates muito comum para os Ie0 deelopers e Ie0designers colocarem conteúdos repetitios emtemplates separados e {include}MincluirO eles como necess$rios Um e/emplo t,pico é o%eadertpl #ueinclui a tag %tml title etc Supon%amos #ueprecisaremos dele parae/i0ir di"erentes t,tulos em di"erentes paginasdependendo da p$gina#ue é inclu,da =oc> consegue "a&er isso@ utili&ando oatri0uto “title”da tag {include},e é assim #ue

passamos ari$eis para su0-templates no Smarty

Page 13: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 13/26

Exemplo de tamplate que inclui o header.tpl com o

parâmetro “title”.

2include "ile34%eadertpl4 title34QelcomeL45

2include "ile34"ootertpl45No header.tpl

6%tml76%ead76title728titleRde"ault14Smarty Qorld456<title76<%ead7

60ody7No footer.tpl

6<0ody76<%tml7'b Wormatando sa,das numéricas=oc> não precisa assinar $rias ari$eis com os

mesmos alores emdi"erentes "ormatos@ por#ue o smarty possui ummodi"icador deari$eis #ue possi0ilita oc> "ormatar a sa,da de umaari$el semmodi"icar seu conteúdo stringK"ormat usa a mesma"ormatting synta/do sprint"MO "unction do PHPExemplo:

28num0er528num0erRstringK"ormat14"4528num0erRstringK"ormat14d45Gom o 8num0er igual a DX]_]N@ o c!digo acima aimostrar1

Page 14: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 14/26

DX]_]NDX_

'' )anipulação de atas A regra da tum0a é PHP coders sempre ão passardatas para o Smartycomo timestamps sso permite #ue os designers detemplate utili&ar odateK"ormat modi"ier para o controle total so0re a"ormatação da

data =oc> pode tam0ém "acilmente compar$-las se#uiserdate format Padrão:

28createateRdateK"ormat5Saída:

We0 _@ bbdate format Customizado:

28createateRdateK"ormat14<m<d45Mostra:

bb<b<_Comparando datas:

2i" 8startate 6 8endate5  "aça alguma coisa

2<i"5Para conerter a sa,da do {html_select_date}para o"ormato timestamp do PHP@ use a "unção a seguir1

6Bp%p"unction ma\eTimeStampM8year344@8mont%344@ 8day344O

2  i"MemptyM8yearOO 2

Page 15: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 15/26

  8year 3 str"timeM44OJ  5  i"MemptyM8mont%OO 2  8mont% 3 str"timeM4m4OJ  5  i"MemptyM8dayOO 2  8day 3 str"timeM4d4OJ  5

  return m\timeMb@ b@ b@ 8mont%@ 8day@8yearOJ5B7' C0"uscando endereços de e-mail?uando oc> e/i0e endereços de e-mail em suas

p$ginas@ ten%a certe&ade #ue estes estão o0"uscados para os spam 0ots não"a&erem a "esta comeles .o Smarty@ oc> pode usar a {mailto}tag parao0"uscar #ual#uer endereço de e-mail Wunctiona de"orma #ue oc>incorpora o endereço de e-mail ia Faascript@ logo@ o

mesmo nãoaparece ia c!digo HT)* se oc> e/i0ir o c!digo "onteExemplo

6di id39contact97Entre em contato pelo e-mail12mailto address38emailAddressencode34Faascript4 su0Fect34Hi Smarty45

6<di7

Page 16: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 16/26

'D Alternando estilos GSS comum possuirmos em nosso sistema ta0elas@ ondecada lin%a aparece

de cor di"erente para "acilitar a leitura e a locali&açãodain"ormação .o Smarty@ utili&ando o {cycle}tag oc>consegue alternar por e/emplo o "undo de suas célulasa cada siclo de um laço de repetiçãoAqui vai um código que alterna entre as classes css

“odd” or “even”.

6ta0le72section name3item loop38items5  6tr class392cycle alues34odd@een4597  6td728items:item;title56<td7  6td728items:item;description56<td7  6<tr7

2<section56<ta0le7' uscando e Apresentando GonteúdoCn emandTradicionalmente@ adicionamos componentes PHPdentro do pr!prio

conteúdo para #ue esta tare"a seFa poss,el@ porém@isso re#uer umpouco de l!gica e de mais a"inidade com o PHP Poroutro lado@remoendo componentes do seus templates re#uer umpouco de l!gica deprogramação para #ue oc> consiga otimi&ar suasrotinas em 0usca de um

mel%or desempen%o

Page 17: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 17/26

Poss,elmente a manutenção para estes tipos detemplates pode ser umerdadeiro pesadelo para proFetos mais longos e maiscomple/os@especialmente #uando o programador PHP e otemplate designer são duaspessoas di"erentes

 A solução é escreer componentes M"unctionsO #ue sãoe/ecutadas on demand M#uando re#uisitadasO pelotemplate

E/istem dois camin%os para se escreer on demandscripts1

o Use a tag 2insert5

Wunciona como se estiessemos c%amando uma"unção pré de"inida peloprogramador Essas "unçVes começam sempre cominsertK e insere oretorno das "unçVes dentro do template onde atag {insert}é colocada A tag é útil para e/i0irconteúdos dinâmicos por#ue o conteúdo nunca écac%geado regularmenteO código PHP:

6Bp%pre#uire 4Smartyclassp%p4J8smarty 3 neI SmartyJ8smarty-7displayM4inde/tpl4OJ

"unction insertKget.eIsM8paramsO

2

Page 18: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 18/26

  i" M8params:4type4; 33 4latest4O 2  << rece0e as not,cias e processa  5  << retorna o resultado  return 8%tmlJ5B7O template, chamado “index.tpl”:

6di class39neIs97

6%D7*atest Smarty .eIs6<%D72insert name34get.eIs4 type34latest456<di7

o Escreva componentes como plugins

Plugin é um modulo #ue e/iste dentro do Smarty #uecontém scriptsPHP para 0uscar e e/i0ir dados necess$rios e assin$-los dentro deari$eis de template sempre carregado on demand@sendo assim@ oc>não precisa se preocupar a respeito de adicionar ouremoer lin%as del!gica dos seus scripts para otimi&$-losComo exemplo, aqui vai um simples plugin para

notícias:function.news.php o0sere o naming conention ecolo#ue o ar#uio dentro do diret!rio de plugins@geralmentesmarty<li0s<plugins de outra maneira seto $plugins_dir

6Bp%p

<< "unction para rece0er as not,cias

Page 19: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 19/26

"unction "etc%KneIsM8sym0olO2  << o neIs items pode ser rece0ido pelo0anco de dados  << mas para este e/emplo@ eu s! criei umarray para simular o retorno  8items 3 arrayM  arrayM4title4374Smarty .eIs4@4description4374reat Smarty Templates4O@

  arrayM4title4374PHP .eIs4@4description4374Smarty Templating Engine4O@  OJ  return 8itemsJ5

"unction smartyK"unctionKneIsM8params@`8smartyO2  << c%amando nossa "unção personali&ada  8neIs 3 "etc%KneIsM8params:4sym0ol4;OJ

  << assinando como uma ariael detemplate  8smarty-7assignM8params:4assign4;@8neIsOJ5Para usar o plugin Smarty News no seu index.tpl:

Page 20: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 20/26

2neIs sym0ol34S)A(T4 assign34items456ul72section name3item loop38items5 6li76%D728items:item;title56<%D76p728items:item;description56<p76<li72<section56<ul7'X Utili&ando G!digos GSS e faascript

entro de Templates SmartyPor padrão@ Smarty diide tudo #ue esta dentro de 2 e 5incluindo os utili&ados pelas regras GSS e "unçVesfaascript

Existem quatro caminhos para escapar da divisão

do Smarty:1.Separe seus ar#uios GSS e faascript emar#uios separados de "orma #ue oc> possa inclu,-losdentro do seutemplate utili&ando os métodos padrão do HT)*Incluindo o estilo CSS:

6lin\ rel39styles%eet9 %re"39stylecss9

type39te/t<css <7Incluindo arquivos Javascript:

6script type39te/t<Faascript9src39popupFs976<script72. Adicione a tag {literal}no in,cio e no "im {/literal}dec!digos GSS ou faascript #ue esteFam incorporados

ao seu documento@ assim@ o Smarty ai dei/ar tudo o#ue estier entre o {literal}e {/literal}em pa&

Page 21: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 21/26

CSS Incorporado:

6style type39te/t<css976L--2literal5p 2te/t-indent1 'bpt50ody 2margin1bJ padding1bJ52<literal5--76<style7Javascript Incorporado:

6script language39Faascript9type39te/t<Faascript9 76L--  2literal5  "unction %elloKIorldMO2

  alertM4Hello Smarty Qorld4OJ  5  2<literal5--76<script73.)ude o Smarty $left_delimitere $right_delimiter

de "orma #ue os delimitadores não se con"undam comos delmitadores deoutras linguagens Além disso@ isso possi0ilita #ue oc>insiraari$eis de template dentro de ar#uios GSS efaascript dinâmicamenteO Código PHP:

6Bp%p  re#uire 4Smartyclassp%p4J

Page 22: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 22/26

  8smarty 3 neI SmartyJ

  8smarty-7le"tKdelimiter 3 46L--24J  8smarty-7rig%tKdelimiter 3 45--74J

  8smarty-7assignM4title4@ 4T%e SmartyTemplate Engine4OJ  8smarty-7assignM4element4@ 4%'4OJ

  8smarty-7assignM4si&e4@ 4DNp/4OJ  8smarty-7assignM4popup4@ 4alert4OJ  8smarty-7displayM4inde/tpl4OJB7O Smarty Template “index.tpl”:

6%ead7

6style type39te/t<css976L--6L--28element5--7 2"ont-si&e1 6L--28si&e5--75--76<%ead760ody7

66L--28element5--776L--28title5--76<6L--28element5--776script language39Faascript9type39te/t<Faascript9 76L--

"unction s%oIKpopupMO

2

Page 23: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 23/26

6L--28popup5--7M46L--28title5--74OJ5

<<--76<script76<0ody7O código acima vai mostrar:

6%ead76style type39te/t<css976L--

%' 2"ont-si&e1 DNp/5--76<%ead760ody76%'7T%e Smarty Template Engine6<%'76script language39Faascript9

type39te/t<Faascript9 76L--"unction s%oIKpopupMO2

alertM4T%e Smarty Template Engine4OJ5

<<--76<script76<0ody7 Use {ldelim}e {rdelim}no lugar de 2 and 5 nade"inição das regras dos seus ar#uios css e na %orade escreer "unçVes FaascriptExemplo, arquivos CSS:

Page 24: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 24/26

6style type39te/t<css976L--  p 2ldelim5te/t-indent1 'bptJ2rdelim5  0ody 2ldelim5margin1bJ padding1bJ2rdelim5--76<style7Mostrará:

6style type39te/t<css97

6L--  p 2te/t-indent1 'bptJ5  0ody 2margin1bJ padding1bJ5--76<style7'N Gac%ing Smarty TemplatesGac%ing aumenta a elocidade em metodos do tipodisplayMO e "etc%MOsalando a sa,da destes metodos em ar#uiosseparados =ale lem0rar #ue o cac%e somente é utili&ado se o conteúdo nãomudou Set 8cac%ing 3 e utili&e o $cache_lifetimepara controlar #uanto

tempo o cac%e da in"ormação deer$ ser matido paradepois então ser atuali&adoAtivando o cache:

6Bp%p  re#uire 4Smartyclassp%p4J  8smarty 3 neI SmartyJ

  << ?uando 8cac%ing 3 '@

Page 25: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 25/26

  << 8cac%eKli"etime 3 ' "orça o cac%epara nunca e/pirar   << 8cac%eKli"etime 3 b ai sempreregenerar o cac%e  << ?uando 8cac%ing 3 @  << 8cac%eKli"etime seta a ida docac%e@ mas o mesmo pode ser setado paratemplates indiiduais  8smarty-7cac%ing 3 J << li"etime é para

cada cac%e

  << (egenera o conteúdo cac%eado senen%um template ou ar#uio decon"iguração "or parte do cac%e #ue estiersendo modi"icado

  8smarty-7compileKc%ec\ 3 trueJ

  << 8smarty-7"orceKcompile 3 trueJ ai"orçar o cac%e ser sempre regenerado

  << assume o cac%eKli"etime para o

template inde/tpl para X minutos  8smarty-7cac%eKli"etime 3 DbbJ  8smarty-7displayM4inde/tpl4OJ

  << assume o cac%eKli"etime para otemplate %ometpl para uma %ora

  8smarty-7cac%eKli"etime 3 DNbbJ

Page 26: 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes

http://slidepdf.com/reader/full/16-tecnicas-smarty-scripting-para-deixar-seus-templates-ainda-mais-inteligentes 26/26

  8smarty-7displayM4%ometpl4OJB7Duas coisas que devem ser consideradas quando

implementamos caching:

' .ão é recomendado colocar o diret!rio de cac%ea0ai/o da pasta rai& do seridor Set 8cac%eKdir paraum diret!rio #uenão seFa acess,el ia Ie0

Ten%a certe&a de #ue o diret!rio do cac%e tempermissão de escrita no seridor

En"im@ conclu,mos 'N Técnicas Smarty Scripting paradei/ar seustemplates ainda mais inteligentes para o seus proFetosQe0 SmartyPara #ual#uer outra coisa@ isite o site o"icial do SmartyTemplate Engine para o PHPSe oc> tem alguma outra dica #ue não "oi inclu,daa#ui@ sinta-se ontade para inclu,-la nos coment$rios

Este artigo é uma tradução<adaptação do artigo 'N =eryUse"ul Sm