Top Banner
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
26

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

Mar 09, 2016

Download

Documents

Jose Soares

16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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