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 templatesUma !tima "onte para #uem est$ começando a codi"icar Smarty TemplatesTen%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
Embed
16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
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
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
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
=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 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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
'' )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
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
'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
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
"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@
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&
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
<<--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:
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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 '@
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
<< 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
7/21/2019 16 Técnicas Smarty Scripting Para Deixar Seus Templates Ainda Mais Inteligentes
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