mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 10:54:27 +02:00
committing portuguese docs updates from Thomas Gonzalez Miranda
This commit is contained in:
@@ -6,8 +6,8 @@
|
|||||||
<para>
|
<para>
|
||||||
A homepage do Smarty est<73> localizada em <ulink
|
A homepage do Smarty est<73> localizada em <ulink
|
||||||
url="&url.smarty;">&url.smarty;</ulink>.
|
url="&url.smarty;">&url.smarty;</ulink>.
|
||||||
Voc<6F> pode entrar na lista de email enviando um e-mail para
|
Voc<6F> pode entrar na lista de discuss<EFBFBD>o enviando um e-mail para
|
||||||
&ml.general.sub;. Um arquivo da lista de e-mail pode ser
|
&ml.general.sub;. O arquivo da lista de discuss<EFBFBD>o pode ser
|
||||||
visto em <ulink url="&url.ml.archive;">&url.ml.archive;</ulink>.
|
visto em <ulink url="&url.ml.archive;">&url.ml.archive;</ulink>.
|
||||||
</para>
|
</para>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@@ -7,53 +7,56 @@
|
|||||||
<sect1 id="tips.blank.var.handling">
|
<sect1 id="tips.blank.var.handling">
|
||||||
<title>Manipula<EFBFBD><EFBFBD>o de Vari<72>vel Vazia</title>
|
<title>Manipula<EFBFBD><EFBFBD>o de Vari<72>vel Vazia</title>
|
||||||
<para>
|
<para>
|
||||||
Quando voc<6F> quer algumas vezes imprimir um valor que voc<6F> definir para uma vari<72>vel vazia
|
H<EFBFBD> momentos que voc<6F> quer mostrar um valor padr<64>o para uma vari<72>vel vazia ao inv<6E>s de n<>o mostrar nada,
|
||||||
ao inv<6E>s de imprimir nada, tal como imprimindo "&nbsp;" a fim de que plano de fundo de tabelas
|
tal como mostrar "&nbsp;" para que os planos de fundo de tabelas funcionem corretamente. Muitos
|
||||||
funcionem corretamente. Muitos usariam uma instru<72><75>o {if} para manipular isto, mas h<> um
|
usariam uma instru<72><75>o {if} para fazer isso, mas h<> um macete que pode ser feito usando-se o
|
||||||
macete com o Smarty, usando o modificador de vari<72>vel
|
modificador de vari<72>vel <emphasis>padr<EFBFBD>o</emphasis> do Smarty.
|
||||||
<emphasis>default</emphasis>.
|
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Imprimindo &nbsp; quando uma vari<72>vel est<73> vazia</title>
|
<title>Imprimindo &nbsp; quando uma vari<72>vel est<73> vazia</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{* A forma mais longa *}
|
{* A forma mais longa *}
|
||||||
|
|
||||||
{if $title eq ""}
|
{if $titulo eq ""}
|
||||||
&nbsp;
|
&nbsp;
|
||||||
{else}
|
{else}
|
||||||
{$title}
|
{$titulo}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
||||||
{* A forma mais simples *}
|
{* A forma mais simples *}
|
||||||
|
|
||||||
{$title|default:"&nbsp;"}</programlisting>
|
{$titulo|default:"&nbsp;"}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="tips.default.var.handling">
|
<sect1 id="tips.default.var.handling">
|
||||||
<title>Manipula<EFBFBD><EFBFBD>o do valor padr<64>o de Vari<72>vel</title>
|
<title>Manipula<EFBFBD><EFBFBD>o do valor padr<64>o de uma Vari<EFBFBD>vel</title>
|
||||||
<para>
|
<para>
|
||||||
Se uma vari<72>vel <20> usada freq<65>entemente em seus templates, aplicando o modificador
|
Se uma vari<72>vel <20> usada freq<65>entemente e seus templates, aplicar o modificador de vari<72>vel
|
||||||
default toda vez que ela <20> mencionado pode evitar um bit desagrad<61>vel. Voc<6F> pode remediar isto
|
<emphasis>padr<EFBFBD>o</emphasis> toda vez pode se tornar algo muito desagrad<61>vel. Voc<6F> pode evitar
|
||||||
pela atribui<EFBFBD><EFBFBD>o de um valor padr<64>o para a vari<72>vel com a fun<75><6E>o
|
isto atribuindo um valor padr<64>o para a vari<72>vel usando a fun<75><6E>o <link linkend="language.function.assign">assign</link>.
|
||||||
<link linkend="language.function.assign">assign</link>.
|
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Atribuindo o valor padr<64>o para uma vari<72>vel de template</title>
|
<title>Atribuindo o valor padr<64>o para uma vari<72>vel de template</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{* fa<66>a isto em algum lugar no topo de seu template *}
|
<![CDATA[
|
||||||
|
{* coloque isto em algum lugar no topo de seu template *}
|
||||||
{assign var="titulo" value=$titulo|default:"sem t<>tulo"}
|
{assign var="titulo" value=$titulo|default:"sem t<>tulo"}
|
||||||
|
|
||||||
{* Se o $titulo estava vazio, ele agora cont<6E>m o valor "sem titulo" quando voc<6F> exib<69>-lo *}
|
{* Se o $titulo estava vazio, ele agora cont<6E>m o valor "sem titulo" quando voc<6F> exib<69>-lo *}
|
||||||
{$title}</programlisting>
|
{$titulo}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="tips.passing.vars">
|
<sect1 id="tips.passing.vars">
|
||||||
<title>Passando a vari<72>vel titulo para o template de cabe<62>alho</title>
|
<title>Passando a vari<72>vel titulo para o template de cabe<62>alho</title>
|
||||||
<para>
|
<para>
|
||||||
Quando a maioria de seus templates usam os mesmos cabe<62>alhos e mesmos rodap<61>s, <20>
|
Quando a maioria de seus templates usam os mesmos cabe<62>alhos e mesmos rodap<61>s, <20>
|
||||||
comum dividi-los um em cada template e ent<6E>o inclu<6C>-los. Mas o que fazer se o
|
comum dividi-los um em cada template e ent<6E>o inclu<6C>-los. Mas o que fazer se o
|
||||||
cabe<62>alho precisa ter um titulo diferente, dependendo de que p<>gina ele est<73> vindo?
|
cabe<62>alho precisa ter um titulo diferente, dependendo de que p<>gina ele est<73> vindo?
|
||||||
Voc<6F> pode passar o titulo para o
|
Voc<6F> pode passar o titulo para o
|
||||||
@@ -62,91 +65,108 @@
|
|||||||
<example>
|
<example>
|
||||||
<title>Passando a vari<72>vel titulo para o template de cabe<62>alho</title>
|
<title>Passando a vari<72>vel titulo para o template de cabe<62>alho</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
mainpage.tpl
|
paginaprincipal.tpl
|
||||||
------------
|
------------
|
||||||
|
|
||||||
{include file="header.tpl" titulo="P<>gina Principal"}
|
{include file="cabecalho.tpl" titulo="P<>gina Principal"}
|
||||||
{* O corpo do template vem aqui *}
|
{* O conte<EFBFBD>do do template vem aqui *}
|
||||||
{include file="footer.tpl"}
|
{include file="rodape.tpl"}
|
||||||
|
|
||||||
|
|
||||||
archives.tpl
|
arquivos.tpl
|
||||||
------------
|
------------
|
||||||
|
|
||||||
{config_load file="archive_page.conf"}
|
{config_load file="pagina_arquivos.conf"}
|
||||||
{include file="header.tpl" titulo=#archivePageTitle#}
|
{include file="cabecalho.tpl" titulo=#tituloPaginaArquivos#}
|
||||||
{* O corpo do template vem aqui *}
|
{* O conte<EFBFBD>do do template vem aqui *}
|
||||||
{include file="footer.tpl"}
|
{include file="rodape.tpl"}
|
||||||
|
|
||||||
|
|
||||||
header.tpl
|
cabecalho.tpl
|
||||||
----------
|
----------
|
||||||
<HTML>
|
<HTML>
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>{$titulo|default:"BC News"}</TITLE>
|
<TITLE>{$title|default:"BC News"}</TITLE>
|
||||||
</HEAD>
|
</HEAD>
|
||||||
<BODY>
|
<BODY>
|
||||||
|
|
||||||
|
|
||||||
footer.tpl
|
footer.tpl
|
||||||
----------
|
----------
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML></programlisting>
|
</HTML>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
<para>
|
<para>
|
||||||
Quando a p<>gina principal <20> atra<EFBFBD>da, o t<>tulo da "P<>gina Principal" <20> passado para o template
|
Quando a p<>gina for extra<EFBFBD>da, o t<>tulo da "P<>gina Principal" <20> passado ao template 'cabecalho.tpl',
|
||||||
header.tpl, e ser<65> subseq<65>encialmente usado com o t<>tulo. Quando a p<>gina de arquivamento <20> atra<EFBFBD>da,
|
e ser<65> imediatamente usado como t<>tulo da p<>gina. Quando a p<>gina de arquivos <20> extra<EFBFBD>da, o t<>tulo
|
||||||
o t<>tulo ser<65> "Archives". Note no exemplo de archive, n<>s estamos usando uma vari<72>vel do arquivo
|
muda para "Arquivos". No que no exemplo de arquivos, n<>s estamos usando uma vari<72>vel que vem do
|
||||||
archives_page.conf ao inv<6E>s de uma vari<72>vel codificada r<>gida.
|
arquivo 'pagina_arquivos.conf' ao inv<6E>s de uma vari<72>vel definida no c<>digo. Note tamb<6D>m que "BC News"
|
||||||
Tamb<6D>m note que "BC news" <20> exibida se
|
<20> mostrado somente se a vari<72>vel $titulo n<>o conter valor algum, isto <20> feito usando-se o modificador
|
||||||
a vari<72>vel $titulo n<>o est<73> definida,
|
de vari<72>veis <emphasis>padr<EFBFBD>o</emphasis>.
|
||||||
usando o modificador de vari<72>vel <emphasis>default</emphasis>.
|
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="tips.dates">
|
<sect1 id="tips.dates">
|
||||||
<title>Datas</title>
|
<title>Datas</title>
|
||||||
<para>
|
<para>
|
||||||
Como uma regra b<>sica, sempre passe datas para o smarty como timestamps. Isto permite ao
|
Em geral, sempre envie datas ao Smarty no formato timestamp. Deste modo o desginer do template
|
||||||
desenhista de template utilizar <link linkend="language.modifier.date.format">date_format</link>
|
pode usar o modificador <link linkend="language.modifier.date.format">date_format</link>
|
||||||
para controle completo sobre a formata<74><61>o de data,
|
para ter um controle total sobre a formata<74><61>o da data, e tamb<6D>m facilita a compara<72><61>o de datas
|
||||||
e tamb<EFBFBD>m facilita a compara<72><61>o de datas se
|
se necess<EFBFBD>rio.
|
||||||
necess<73>rio.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
NOTA: No Smarty 1.4.0, voc<6F> pode passar datas para o Smarty como timestamps unix,
|
Nota: No Smarty 1.4.0, voc<6F> pode enviar datas ao Smarty no formato unix timestamp,
|
||||||
mysql, ou qualquer outra data interpret<EFBFBD>vel por strtotime().
|
mysql timestamp, ou qualer outra data que possa ser lida pela fun<75><6E>o strtotime().
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Usando date_format</title>
|
<title>usando date_format</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{$startDate|date_format}
|
{$startDate|date_format}
|
||||||
|
]]>
|
||||||
SA<EFBFBD>DA:
|
</programlisting>
|
||||||
|
<para>
|
||||||
|
Ir<49> mostrar:
|
||||||
|
</para>
|
||||||
|
<screen>
|
||||||
|
<![CDATA[
|
||||||
Jan 4, 2001
|
Jan 4, 2001
|
||||||
|
]]>
|
||||||
|
</screen>
|
||||||
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{$startDate|date_format:"%Y/%m/%d"}
|
{$startDate|date_format:"%Y/%m/%d"}
|
||||||
|
]]>
|
||||||
SA<EFBFBD>DA:
|
</programlisting>
|
||||||
|
<para>
|
||||||
|
Ir<49> mostrar:
|
||||||
|
</para>
|
||||||
|
<screen>
|
||||||
|
<![CDATA[
|
||||||
2001/01/04
|
2001/01/04
|
||||||
|
]]>
|
||||||
|
</screen>
|
||||||
{if $date1 < $date2}
|
<programlisting>
|
||||||
...
|
<![CDATA[
|
||||||
{/if}</programlisting>
|
{if $data1 < $data2}
|
||||||
</example>
|
...
|
||||||
|
{/if}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
|
</example>
|
||||||
<para>
|
<para>
|
||||||
Quando usando {html_select_date} em um template, o programador normalmente vai querer converter
|
Quando se est<73> usando {html_select_date} em um template, o programador normalmente vai querer
|
||||||
a sa<73>da de um formul<75>rio de volta para o formato de timestamp. Aqui est<73> uma fun<75><6E>o para ajudar
|
converter a sa<73>da de um formul<75>rio de volta para o formato timestamp. Abaixo est<73> uma fun<75><6E>o
|
||||||
com isso.
|
que ir<69> ajud<75>-lo <20> fazer isto.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Convertendo elementos em forma de data de volta para um timestamp</title>
|
<title>Convertendo datas de volta ao formato timestamp</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// isto assume que a forma de seus elementos s<>o nomeadas como
|
<![CDATA[
|
||||||
|
<?php
|
||||||
|
// presume-se que os elementos de seu formul<75>rio s<>o chamados de
|
||||||
// startDate_Day, startDate_Month, startDate_Year
|
// startDate_Day, startDate_Month, startDate_Year
|
||||||
|
|
||||||
$startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day);
|
$startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day);
|
||||||
@@ -161,175 +181,159 @@ function makeTimeStamp($year="",$month="",$day="")
|
|||||||
$day = strftime("%d");
|
$day = strftime("%d");
|
||||||
|
|
||||||
return mktime(0,0,0,$month,$day,$year);
|
return mktime(0,0,0,$month,$day,$year);
|
||||||
}</programlisting>
|
}
|
||||||
|
?>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="tips.wap">
|
<sect1 id="tips.wap">
|
||||||
<title>WAP/WML</title>
|
<title>WAP/WML</title>
|
||||||
<para>
|
<para>
|
||||||
Os templates WAP/WML requerem um cabe<62>alho de Content-Type de PHP para ser passado junto com
|
Os templates WAP/WML exigem um cabe<62>alho com o tipo de conte<74>do (Content-Type) PHP para serem
|
||||||
template. A forma mais f<>cil de fazer isto seria escrever uma fun<75><6E>o customizada que imprime
|
passados junto com o template. O modo mais f<>cil de se fazer isso seria escrever uma fun<75><6E>o
|
||||||
o cabe<62>alho. Se voc<6F> est<73> usando sistema de caching, esse n<>o funcionar<EFBFBD>, ent<EFBFBD>o n<>s faremos isso
|
personalizada que envia-se este cabe<62>alho. Se voc<6F> est<73> usando cache, isto n<>o ir<69> funcionar,
|
||||||
usando a tag de insert (lembre que tags de insert n<>o s<>o "cached!") Certifique-se que n<EFBFBD>o h<EFBFBD> sa<73>da
|
ent<6E>o n<>s faremos isso usando a tag insert (lembre-se que tags de insert n<>o s<>o guardadas no cache!).
|
||||||
para o navegador antes do template,
|
Certifique-se de que nada <20> enviado ao navegador antes do template, caso contr<74>rio o cabe<62>alho n<>o ir<69>
|
||||||
sen<65>o o cabe<62>alho ir<69> falhar.
|
funcionar.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Usando insert para escrever um cabe<62>alho WML Content-Type</title>
|
<title>Usando insert para escrever um cabe<62>alho WML Content-Type</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
// esteja certo que o apache est<73> configurado para as extens<6E>es .wml !
|
<![CDATA[
|
||||||
// ponha esta fun<75><6E>o em algum lugar de sua aplica<63><61>o, ou em Smarty.addons.php
|
<?php
|
||||||
function insert_header() {
|
// certifique-se que o apache est<73> configurado para reconhecer extens<6E>es .wml!
|
||||||
// esta fun<75><6E>o espera o argumento $content
|
// coloque esta fun<75><6E>o em algum lugar de seu aplicativo, ou no arquivo Smarty.addons.php
|
||||||
extract(func_get_arg(0));
|
|
||||||
if(empty($content))
|
function insert_header($params)
|
||||||
return;
|
{
|
||||||
header($content);
|
// esta fun<75><6E>o espera o argumento $content
|
||||||
return;
|
if (empty($params['content'])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
header($params['content']);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
?>
|
||||||
// seu template Smarty _deve_ come<6D>ar com a insert tag, olha o exemplo:
|
]]>
|
||||||
|
</programlisting>
|
||||||
|
<para>
|
||||||
|
seu template do Smarty deve come<6D>ar com a tag insert, veja o exemplo <20> seguir:
|
||||||
|
</para>
|
||||||
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{insert name=header content="Content-Type: text/vnd.wap.wml"}
|
{insert name=header content="Content-Type: text/vnd.wap.wml"}
|
||||||
|
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
||||||
|
|
||||||
<!-- begin new wml deck -->
|
<!-- begin new wml deck -->
|
||||||
<wml>
|
<wml>
|
||||||
<!-- begin first card -->
|
<!-- begin first card -->
|
||||||
<card>
|
<card>
|
||||||
<do type="accept">
|
<do type="accept">
|
||||||
<go href="#two"/>
|
<go href="#two"/>
|
||||||
</do>
|
</do>
|
||||||
<p>
|
<p>
|
||||||
Bem-vindo ao WAP com Smarty!
|
Bem-vindo ao WAP com Smarty!
|
||||||
Pressione OK para continuar...
|
Pressione OK para continuar...
|
||||||
</p>
|
</p>
|
||||||
</card>
|
</card>
|
||||||
<!-- begin second card -->
|
<!-- begin second card -->
|
||||||
<card id="two">
|
<card id="two">
|
||||||
<p>
|
<p>
|
||||||
Bem f<>cil isso, n<>o <20>?
|
Bem f<>cil isso, n<>o <20>?
|
||||||
</p>
|
</p>
|
||||||
</card>
|
</card>
|
||||||
</wml></programlisting>
|
</wml>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="tips.componentized.templates">
|
<sect1 id="tips.componentized.templates">
|
||||||
<title>Templates componentizados</title>
|
<title>Templates componentizados</title>
|
||||||
<para>
|
<para>
|
||||||
Esta dica <20> um pouco de hack, mas ainda <20> uma id<69>ia limpa.
|
Tradicionalmente, programar templates para suas aplica<63><61>es <20> feito da seguinte maneira:
|
||||||
Use-a por seu pr<70>prio risco. ;-)
|
Primeiro, voc<6F> guardar suas vari<72>veis junto com a aplica<63><61>o PHP, (talvez obtendo-as de consultas
|
||||||
</para>
|
<20> banco de dados). Ap<41>s, voc<6F> instancia seu objeto Smarty, atribui valores <20>s vari<72>veis e
|
||||||
<para>
|
mostra o template. Digamos que n<>s temos um registrador de estoque em nosso template. N<>s
|
||||||
Tradicionalmente, programar templates em suas aplica<63><61>es segue esta forma:
|
coletar<61>amos os dados do estoque em nossa aplica<63><61>o, e ent<6E>o atribu<62>riamos valores as vari<72>veis
|
||||||
Primeiro, voc<6F> acumula suas vari<72>veis dentro de sua aplica<63><61>o PHP, (talvez com requisi<73><69>es
|
referentes <20> ele no template e depois exibir<69>amos o template na tela. Agora n<>o seria legal
|
||||||
de banco de dados.) Ent<6E>o, voc<6F> instancia seu objeto Smarty, atribui valores <20>s vari<72>veis
|
se voc<6F> pudesse adicionar este registrador de esto em qualquer aplica<63><61>o simplesmente incluindo
|
||||||
e exibe o template. Por exemplo n<>s temos um registrador de estoque em nosso template.
|
um template nela, e sem se preocupar com a busca dos dados futuramente?
|
||||||
N<>s coletar<61>amos os dados estocagem em nossa aplica<63><61>o, ent<6E>o damos valor a estas vari<72>veis
|
|
||||||
no template e o exibimos. Agora isso seria legal
|
|
||||||
se voc<6F> adicionasse este registrador de
|
|
||||||
armazenamento (stock ticker) para qualquer aplica<63><61>o simplesmente incluindo o template, e sem
|
|
||||||
se preocupar com a busca de dados mais a frente?
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Voc<EFBFBD> pode embutir o PHP dentro de seus templates com as tags {php}{/php}.
|
Voc<EFBFBD> pode fazer isto escrevendo um plugin personalizado que obteria o
|
||||||
Com isto, voc<6F> pode configurar templates independentes, tendo a sua pr<70>pria
|
conte<74>do e atribuiria ele <20> uma vari<72>vel definida no template.
|
||||||
estrutura de dados para dar valor <20>s suas pr<70>prias vari<72>veis. Com a l<>gica embutida
|
|
||||||
dessa forma, voc<6F> pode manter a l<>gica do template & junto. Desta maneira n<>o <20>
|
|
||||||
importante de onde o fonte do
|
|
||||||
template est<73> vindo, ele est<73> sempre junto como um componente.
|
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Template componentizado</title>
|
<title>Template componentizado</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
{* Smarty *}
|
<![CDATA[
|
||||||
|
<?php
|
||||||
|
|
||||||
{php}
|
// coloque o arquivo "function.load_ticker.php" no diret<65>rio plugin
|
||||||
|
|
||||||
// configurar nossa fun<75><6E>o para buscar dados armazenados
|
|
||||||
function fetch_ticker($symbol,&$ticker_name,&$ticker_price) {
|
|
||||||
// ponha a l<>gica aqui que procura $ticker_name
|
|
||||||
// e $ticker_price de algum recurso
|
|
||||||
}
|
|
||||||
|
|
||||||
// chama a fun<75><6E>o
|
|
||||||
fetch_ticker("YHOO",$ticker_name,$ticker_price);
|
|
||||||
|
|
||||||
// passando valores <20>s vari<72>veis de template
|
|
||||||
$this->assign("ticker_name",$ticker_name);
|
|
||||||
$this->assign("ticker_price",$ticker_price);
|
|
||||||
|
|
||||||
{/php}
|
|
||||||
|
|
||||||
Nome do Estoque: {$ticker_name} Pre<72>o do Estoque: {$ticker_price}</programlisting>
|
|
||||||
</example>
|
|
||||||
<para>
|
|
||||||
No Smarty 1.5.0, h<> at<61> uma forma mais limpa. Voc<6F> pode incluir o php em seus templates com
|
|
||||||
a tag {include_php ...}.
|
|
||||||
Desta forma voc<6F> pode manter a l<>gica do PHP separada da l<>gica do
|
|
||||||
template. Veja a fun<75><6E>o <link linkend="language.function.include.php">include_php</link> para
|
|
||||||
mais informa<6D><61>o.
|
|
||||||
</para>
|
|
||||||
<example>
|
|
||||||
<title>Template componentizado com include_php</title>
|
|
||||||
<programlisting>
|
|
||||||
load_ticker.php
|
|
||||||
---------------
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// configura nossa fun<75><6E>o para buscar os dados armazenados
|
|
||||||
function fetch_ticker($symbol,&$ticker_name,&$ticker_price) {
|
|
||||||
// ponha aqui a l<>gica que procura $ticker_name
|
|
||||||
// e $ticker_price de algum recurso
|
|
||||||
}
|
|
||||||
|
|
||||||
// chama a fun<75><6E>o
|
|
||||||
fetch_ticker("YHOO",$ticker_name,$ticker_price);
|
|
||||||
|
|
||||||
// passar valores para as vari<72>veis de template
|
|
||||||
$this->assign("ticker_name",$ticker_name);
|
|
||||||
$this->assign("ticker_price",$ticker_price);
|
|
||||||
?>
|
|
||||||
|
|
||||||
|
// configura nossa fun<75><6E>o para pegar os dados do estoque
|
||||||
|
function fetch_ticker($symbol)
|
||||||
|
{
|
||||||
|
// coloque a l<>gica que obt<62>m os dados de
|
||||||
|
// algum recurso e guarde na vari<72>vel $ticker_info
|
||||||
|
return $ticker_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
function smarty_function_load_ticker($params, &$smarty)
|
||||||
|
{
|
||||||
|
// chama a fun<75><6E>o
|
||||||
|
$ticker_info = fetch_ticker($params['symbol']);
|
||||||
|
|
||||||
|
// atribuite o valor <20> uma vari<72>vel no template
|
||||||
|
$smarty->assign($params['assign'], $ticker_info);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
index.tpl
|
index.tpl
|
||||||
---------
|
---------
|
||||||
|
|
||||||
{* Smarty *}
|
{* Smarty *}
|
||||||
|
|
||||||
{include_php file="load_ticker.php"}
|
{load_ticker symbol="YHOO" assign="ticker"}
|
||||||
|
|
||||||
Nome do Estoque: {$ticker_name} Pre<72>o do Estoque: {$ticker_price}</programlisting>
|
Nome no estoque: {$ticker.name} Pre<72>o no estoque: {$ticker.price}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="tips.obfuscating.email">
|
<sect1 id="tips.obfuscating.email">
|
||||||
<title>Ofuscando endere<72>os de E-mail</title>
|
<title>Ofuscando endere<72>os de E-mail</title>
|
||||||
<para>
|
<para>
|
||||||
Voc<6F> deseja saber como seu endere<72>o de E-mail consegue entrar em tantas listas de email de spam?
|
Voc<6F> j<> se espantou como seu endere<72>o de E-mail entra em tantas listas de spam?
|
||||||
A <20>nica forma de spammers coletar endere<72>os de E-mail <20> de p<>ginas da web. Para ajudar a combater
|
A <20>nica forma dos spammers coletarem seu(s) endere<72>o(s) de E-mail(s) <20> de p<>ginas web.
|
||||||
este problema, voc<6F> pode fazer o seu endere<72>o de E-mail aparecer em javascript misturado no
|
Para ajudar <20> combater este problema, voc<6F> pode fazer seu endere<72>o de E-mail aparecer em javascript
|
||||||
c<>digo HTML, mesmo assim ele aparecer<EFBFBD> e funcionar<EFBFBD> corretamente no navegador. Isto <20> feito com
|
misturado em c<EFBFBD>digo HTML, e ainda assim ele ir<69> aparecer e funcionar corretamente no navegador.
|
||||||
o plugin mailto.
|
Isto <20> feito com o plugin chamado 'mailto'.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Exemplo de ofuscamento de um Endere<72>o de E-mail</title>
|
<title>Exemplo de ofuscamento de um Endere<72>o de E-mail</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
index.tpl
|
index.tpl
|
||||||
---------
|
---------
|
||||||
|
|
||||||
envia inquisi<EFBFBD><EFBFBD>o para
|
envia informa<EFBFBD><EFBFBD>es para
|
||||||
{mailto address=$EmailAddress encode="javascript" subject="Ol<4F>"}
|
{mailto address=$EmailAddress encode="javascript" subject="Ol<4F>"}
|
||||||
|
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
<note>
|
<note>
|
||||||
<title>Nota t<>cnica</title>
|
<title>Nota t<>cnica</title>
|
||||||
<para>
|
<para>
|
||||||
Este m<>todo n<>o <20> 100% a prova de falha. Um spammer poderia criar um programa
|
Este m<>todo n<>o <20> 100% a prova de falha. Um spammer poderia criar um programa
|
||||||
para coletar o e-mail e para decodificar estes valores, mas n<EFBFBD>o <EFBFBD> muito comum.
|
para coletar o e-mail e decodificar estes valores, mas <20> muito pouco prov<6F>vel.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@@ -4,11 +4,10 @@
|
|||||||
<title>Localiza<EFBFBD><EFBFBD>o de Erros</title>
|
<title>Localiza<EFBFBD><EFBFBD>o de Erros</title>
|
||||||
<para></para>
|
<para></para>
|
||||||
<sect1 id="smarty.php.errors">
|
<sect1 id="smarty.php.errors">
|
||||||
<title>erros de Smarty/PHP </title>
|
<title>Erros do Smarty/PHP</title>
|
||||||
<para>
|
<para>
|
||||||
O Smarty pode obter muitos erros tais como, atributos de tags perdidos ou nomes de vari<72>veis
|
O Smarty pode obter muitos erros tais como, atributos de tags perdidos ou nomes de vari<72>veis
|
||||||
mal formadas. Se isto acontece, voc<6F> ver<65>
|
mal formadas. Se isto acontece, voc<6F> ver<65> um erro similar ao seguir:
|
||||||
um erro como segue:
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
@@ -28,9 +27,9 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
H<> certos erros que o smarty n<>o pode entender, tais como um um fechamento de tags errado.
|
H<> certos erros que o Smarty n<>o consegue detectar, tais como uma tag de fechamento errada.
|
||||||
Estes tipos de erros normalmente
|
Estes tipos de erro geralmente acabam gerando erros em tempo de processamento do interpretador
|
||||||
termina na interpreta<74><61>o de erros do tempo de compila<6C><61>o do PHP.
|
de erros do PHP.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
@@ -44,10 +43,10 @@ Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
|
|||||||
script PHP compilado, n<>o o template em si. Normalmente voc<6F> pode no template localizar o
|
script PHP compilado, n<>o o template em si. Normalmente voc<6F> pode no template localizar o
|
||||||
erro de sintaxe. Aqui algumas coisas para voc<6F> procurar:
|
erro de sintaxe. Aqui algumas coisas para voc<6F> procurar:
|
||||||
falta de fechamento de tags para {if}{/if} ou
|
falta de fechamento de tags para {if}{/if} ou
|
||||||
{section}{/section}, ou sintaxe da l<>gica dentro de uma tag {if}.
|
{section}{/section}, ou erro de l<>gica dentro de uma tag {if}.
|
||||||
Se voc<6F> n<>o encontra o erro, voc<EFBFBD> pode ter
|
Se voc<6F> n<>o conseguir encontrar o erro, talvez seja necess<73>rio abrir
|
||||||
que abrir o arquivo PHP compilado e ir at<61> o numero da linha exibido, no local onde o erro correspondente
|
o arquivo PHP compilado e ir at<61> o n<EFBFBD>mero da linha exibido, para saber
|
||||||
est<73> no template.
|
onde se encontra o erro correspondente no template.
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@@ -21,6 +21,9 @@
|
|||||||
<author>
|
<author>
|
||||||
<firstname>Taniel</firstname><surname>Franklin <taniel@ig.com.br></surname>
|
<firstname>Taniel</firstname><surname>Franklin <taniel@ig.com.br></surname>
|
||||||
</author>
|
</author>
|
||||||
|
<author>
|
||||||
|
<firstname>Thomas</firstname><surname>Thomas Gonzalez Miranda <thomasgm@php.net></surname>
|
||||||
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
<pubdate>&build-date;</pubdate>
|
<pubdate>&build-date;</pubdate>
|
||||||
<copyright>
|
<copyright>
|
||||||
|
@@ -3,36 +3,35 @@
|
|||||||
<chapter id="chapter.debugging.console">
|
<chapter id="chapter.debugging.console">
|
||||||
<title>Debugging Console</title>
|
<title>Debugging Console</title>
|
||||||
<para>
|
<para>
|
||||||
H<> um console para debug incluso no Smarty. O console informa a voc<6F> de
|
H<> um console para debug incluso no Smarty. O console informa <EFBFBD> voc<6F> todos
|
||||||
todos os templates inclu<6C>dos, vari<72>veis definidas e vari<72>veis de arquivos de configura<EFBFBD><EFBFBD>o
|
os templates inclu<6C>dos, vari<72>veis definidas e vari<72>veis de arquivos de
|
||||||
da chamada atual do template. Um template chamado "debug.tpl"
|
configura<72><61>o do template atual. Um template chamado "debug.tpl" est<73>
|
||||||
<20> incluso com a distribui<75><69>o do Smarty o qual controla a formata<EFBFBD><EFBFBD>o
|
incluso com a distribui<75><69>o do Smarty o qual controla a formta<74><61>o do console.
|
||||||
do console. Defina $debugging para true no Smarty, e se necess<73>rio defina $debug_tpl
|
Defina a vari<72>vel $debugging para true no Smarty, e se necess<73>rio defina
|
||||||
para o caminho de recurso de debug.tpl (isto <20> SMARTY_DIR por
|
$debug_tpl com o caminho do diret<65>rio onde est<73> o arquivo debug.tpl (o diret<65>rio padr<64>o
|
||||||
padr<EFBFBD>o.) Quando voc<6F> carrega uma p<>gina, um console em javascript ir<69> abrir uma
|
<EFBFBD> o da constante SMARTY_DIR). Quando voc<6F> carrega uma p<>gina, um javascript abre uma
|
||||||
janela popup e dar a voc<6F> o nome de todos os templates inclu<6C>dos e as vari<EFBFBD>veis definidas
|
janela pop-up e fornece <20> voc<6F> o nome de todos os templates inclu<6C>dos e vari<72>veis definidas
|
||||||
para a p<>gina atual. Para ver as vari<72>veis dispon<6F>veis para um template
|
ara a p<>gina atual. Para ver as vari<72>veis dispon<6F>veis para um template espec<65>fico,
|
||||||
em particular, veja a fun<75><6E>o <link linkend="language.function.debug">{debug}</link>.
|
veja a fun<75><6E>o <link linkend="language.function.debug">{debug}</link>. Para desabilitar
|
||||||
Para desabilitar o console de debug, defina $debugging para
|
o console de debug, defina a vari<72>vel $debugging para false. Voc<6F> tamb<6D>m pode ativar
|
||||||
false. Voc<6F> pode ativar temporariamente o console de debug colocando
|
temporariamente o console de debug colocando na URL, caso voc<6F> tenha ativado esta op<6F><70>o
|
||||||
SMARTY_DEBUG na URL se voc<6F> ativou esta op<6F><70>o com <link
|
na vari<72>vel <link linkend="variable.debugging.ctrl">$debugging_ctrl</link>.
|
||||||
linkend="variable.debugging.ctrl">$debugging_ctrl</link>.
|
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<note>
|
||||||
<title>Nota T<>cnica</title>
|
<title>Nota T<>cnica</title>
|
||||||
<para>
|
<para>
|
||||||
O console de debug n<>o funciona quando voc<6F> usa a API fetch(),
|
O console de debug n<>o funciona quando voc<6F> usa a API fetch(),
|
||||||
apenas quando estiver usando display(). <20> um conjunto de comandos javascript
|
somente quando voc<6F> estiver usando display(). Isto <20> um conjunto de comandos
|
||||||
adicionados ao final do template gerado. Se voc<6F> n<>o gosta de javascript,
|
em javascript adicionados ao final do template gerado. Se voc<6F> n<>o gosta de javascript,
|
||||||
voc<6F> pode editar o template debug.tpl para formatar a sa<73>da como voc<6F> quiser.
|
voc<6F> pode editar o template debug.tpl para exibir sa<73>da no formato que voc<6F> quiser.
|
||||||
Dados de debug n<>o s<>o guardados em cache e os dados de debug.tpl
|
Dados do debug n<>o s<>o armazenados em cache e os dados do debug.tpl n<>o s<>o
|
||||||
n<>o s<>o inclu<EFBFBD>dos no console de debug.
|
inclusos no console de debug.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
Os tempos de carregamento de cada template e arquivo de cofigura<72><61>o s<>o em segundos,
|
O tempo de carregamento de cada template e arquivo de configura<EFBFBD><EFBFBD>o s<>o exibidos em
|
||||||
ou ent<6E>o fra<72><61>es.
|
segundos, ou ent<6E>o fra<72><61>es de segundo.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@@ -3,69 +3,68 @@
|
|||||||
<chapter id="config.files">
|
<chapter id="config.files">
|
||||||
<title>Arquivos de Configura<72><61>o</title>
|
<title>Arquivos de Configura<72><61>o</title>
|
||||||
<para>
|
<para>
|
||||||
Arquivos de configura<72><61>o s<>o <20>teis para designers gerenciarem v<EFBFBD>riaveis
|
Arquivos de configura<72><61>o s<>o <20>teis para designers que gerenciam vari<EFBFBD>veis globais
|
||||||
globais para os templates a partir de um arquivo. Um exemplo s<>o as cores do template. Normalmente se
|
para os templates <EFBFBD> partir de um arquivo. Um exemplo s<>o as cores do template.
|
||||||
se voc<6F> quer mudar o tema de cores para uma aplica<63><61>o, voc<6F> deve ir
|
Normalmente se voc<6F> quisesse mudar o tema de cores de uma aplica<63><61>o, voc<6F> teria
|
||||||
em cada um dos arquivos de template e mudar as cores. Com
|
que abrir cada arquivo de template e alterar as cores. Com arquivos de configura<72><61>es,
|
||||||
um arquivo de configura<72><61>o, as cores podem ser mantidas em um lugar, e apenas
|
as cores podem ser armazenadas em um lugar, e apenas um arquivo precisaria ser alterado.
|
||||||
um arquivo precisa ser atualizado.
|
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Examplo de sintaxe de um arquivo de configura<72><61>o</title>
|
<title>Exemplo de sintaxe de um arquivo de configura<72><61>o</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# global variables
|
<![CDATA[
|
||||||
pageTitle = "Main Menu"
|
# vari<72>veis globais
|
||||||
bodyBgColor = #000000
|
tituloPagina = "Menu Principal"
|
||||||
tableBgColor = #000000
|
corfundoPagina = #000000
|
||||||
rowBgColor = #00ff00
|
corfundoTabela = #000000
|
||||||
|
corlinhaTabela = #00ff00
|
||||||
|
|
||||||
[Customer]
|
[Consumidor]
|
||||||
pageTitle = "Customer Info"
|
tituloPagina = "Informa<6D><61>es do Consumidor"
|
||||||
|
|
||||||
[Login]
|
[Login]
|
||||||
pageTitle = "Login"
|
tituloPagina = "Login"
|
||||||
focus = "username"
|
focus = "nomeusuario"
|
||||||
Intro = """este <20> um valor
|
Intro = """Este <20> um valor que ultrapassa uma
|
||||||
que se divide m mais de uma linha. deve
|
linha. Voc<6F> deve coloc<6F>-lo
|
||||||
estar dentro de tr<74>s aspas."""
|
dentre tr<74>s aspas."""
|
||||||
|
|
||||||
# hidden section
|
# se<73><65>o invis<69>vel
|
||||||
[.Database]
|
[.BancoDeDados]
|
||||||
host=my.domain.com
|
host=meu.dominio.com
|
||||||
db=ADDRESSBOOK
|
bd=LIVRODEVISITAS
|
||||||
user=php-user
|
usuario=usuario-php
|
||||||
pass=foobar</programlisting>
|
senha=foobar
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
<para>
|
<para>
|
||||||
Valores de vari<72>veis podem estar entre aspas, mas n<>o <20> necess<73>rio.
|
Valores de vari<72>veis de arquivos de configura<72><61>o pode estar entre aspas,
|
||||||
Voc<6F> pode usar aspas simples ou duplas. Se voc<6F> tiver um valor que
|
mas n<>o <20> necess<73>rio. Voc<6F> pode usar tanto aspas simples como duplas.
|
||||||
ocupe mais de uma linha, coloque todo o valor entre tr<74>s aspas
|
Se voc<6F> tiver um valor que ocupe mais de uma linha, coloque-o dentre tr<74>s aspas
|
||||||
("""). Voc<6F> pode colocar coment<6E>rios em um arquivo de configura<72><61>o com qualquer sintaxe
|
("""). Voc<6F> pode colocar coment<6E>rios em arquivos de configura<72><61>o com qualquer
|
||||||
que n<>o seja v<>lida em um arquivo de configura<72><61>o. N<>s recomendamos usar um <literal>#</literal>
|
sintaxe que n<>o <EFBFBD> v<>lida para um arquivo de configura<72><61>o. N<>s recomendamos usar um
|
||||||
(cancela) no <20>nicio de cada linha.
|
<literal>#</literal> (cancela) no in<EFBFBD>cio de cada linha que cont<6E>m o coment<6E>rio.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Este arquivo de onfigura<72><61>o tem duas se<73><65>es. Nomes de se<73><65>es devem estar entre conchetes
|
Este arquivo de configura<EFBFBD><EFBFBD>o tem duas se<73><65>es. Nomes de se<73><65>es devem estar entre conchetes [].
|
||||||
[]. Nomes de se<73><65>o podem ser string arbritraria que n<>o contenham os s<>mbolos
|
Nomes de se<73><65>o podem ser string arbritraria que n<>o contenham os s<>mbolos
|
||||||
<literal>[</literal> ou <literal>]</literal>. As quatro vari<72>veis no top s<>o
|
<literal>[</literal> ou <literal>]</literal>. As quatro vari<72>veis no topo s<>o vari<72>veis globais,
|
||||||
vari<72>veis globais, ou vari<72>veis sem se<73><65>o.
|
ou vari<72>veis que n<>o pertencem <20> uma se<73><65>o. Estas vari<72>veis sempre s<>o carregadas do arquivo de
|
||||||
Estas vari<72>veis s<EFBFBD>o sempre carregadas do arquivo de configura<72><61>o. Se uma se<73><65>o em
|
configura<72><61>o. Se uma se<73><EFBFBD>o em particular <20> carregada, ent<6E>o as vari<72>veis globais e as vari<72>veis
|
||||||
particular for carregada, ent<6E>o as vari<72>veis globais e as vari<72>veis desta se<73><65>o s<>o carregadas.
|
desta se<73><65>o tamb<6D>m s<>o carregadas. Se uma vari<72>vel de se<73><65>o e global j<> existirem,
|
||||||
Se uma vari<72>vel existir como global e dentro de uma se<73><65>o,
|
a vari<72>vel de se<73><65>o ser<65> utilizada. Se voc<6F> tiver duas vari<72>veis na mesma se<73><65>o com o mesmo nome,
|
||||||
a vari<72>vel da se<73><65>o ser<65> utilizada. Se voc<6F> tiver duas vari<72>veis na mesma se<73><65>o com o mesmo nome,
|
a <20>ltima ser<65> utilizada.
|
||||||
a <20>ltima ser<65> utilizada.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Arquivos de configura<72><61>o s<>o carregados no template com a fun<75><6E>o embutida
|
Arquivos de configura<72><61>o s<>o carregados no template usando a fun<75><6E>o embutida <command>config_load</command>.
|
||||||
<command>config_load</command>.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Voc<6F> pode esconder vari<72>veis ou se<73><65>es inteiras colocando um ponto
|
Voc<6F> pode esconder as vari<EFBFBD>veis ou uma se<EFBFBD><EFBFBD>o inteira colocando um ponto
|
||||||
antes do nome da vari<72>vel. Isto <20> <20>til se a sua aplica<63><61>o
|
antes do nome da se<EFBFBD><EFBFBD>o ou vari<EFBFBD>vei. Isso <20> <20>til em casos no qual sua aplica<63><61>o l<>
|
||||||
se arquivos de configura<72><61>o e l<EFBFBD> dados sens<6E>veis a partir deles
|
arquivos de configura<72><61>o e obt<EFBFBD>m dados sens<6E>veis que n<>o s<>o necess<73>rios para o sistema
|
||||||
que a ferramenta de template n<>o precisa. Se voc<6F> tem terceiros fazendo a edi<64><69>o de templates,
|
de templates. Se a edi<64><69>o de seus templates <20> terceirizada, voc<6F> ter<65> certeza que eles n<>o
|
||||||
voc<6F> ter<65> certesa que eles n<>o leiam dados sens<6E>veis
|
ir<69>o ler os dados sens<6E>veis do arquivo de configura<72><61>o que <20> carregado no template.
|
||||||
do arquivo de configura<72><61>o carregando ele no template.
|
|
||||||
</para>
|
</para>
|
||||||
</chapter>
|
</chapter>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -4,16 +4,15 @@
|
|||||||
<chapter id="language.basic.syntax">
|
<chapter id="language.basic.syntax">
|
||||||
<title>Sintaxe B<>sica</title>
|
<title>Sintaxe B<>sica</title>
|
||||||
<para>
|
<para>
|
||||||
Todas as tags de template do Smarty est<EFBFBD>o fechadas com delimitadores.
|
Todas as tags de template do Smarty cont<EFBFBD>m delimitadores. Por padr<64>o,
|
||||||
Por padr<64>o, estes delimitadores s<>o <literal>{</literal> e
|
estes delimitadores s<>o <literal>{</literal> e <literal>}</literal>,
|
||||||
<literal>}</literal>, mas eles podem ser mudados.
|
mas eles podem ser alterados.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Para estes exemplos, n<>s iremos assumir que voc<6F> est<73> usando os
|
Para os exemplos <20> seguir, n<>s assumiremos que voc<6F> est<73> usando os delimitadores
|
||||||
delimitadores padr<EFBFBD>o. No Smarty, todo o conte<74>do fora dos delimitadores <20>
|
padr<64>o. Para o Smarty, todo o conte<74>do fora dos delimitadores <20> mostrado como
|
||||||
mostrado como conte<EFBFBD>do estatico, ou sem modifica<63><61>es. Quando o Smarty encontra
|
conte<74>do est<EFBFBD>tico, ou inalter<EFBFBD>vel. Quando o Smarty encontra tags de template,
|
||||||
tags de template, ele tenta interpreta-las, e ent<6E>o mostra a sa<73>da
|
ele tenta interpret<EFBFBD>-las, e ent<6E>o mostra a sa<73>da apropriada em seu lugar.
|
||||||
apropriada em seu lugar.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
&designers.language-basic-syntax.language-syntax-comments;
|
&designers.language-basic-syntax.language-syntax-comments;
|
||||||
|
@@ -3,24 +3,27 @@
|
|||||||
<sect1 id="language.math">
|
<sect1 id="language.math">
|
||||||
<title>Matem<EFBFBD>tica</title>
|
<title>Matem<EFBFBD>tica</title>
|
||||||
<para>
|
<para>
|
||||||
Matem<65>tica pode ser aplicada diretamente em valores de vari<72>veis.
|
Matem<65>tica pode ser aplicada diretamente aos valores de vari<72>veis.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Exemplos de matem<65>tica</title>
|
<title>Exemplos de matem<65>tica</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{$foo+1}
|
{$foo+1}
|
||||||
|
|
||||||
{$foo*$bar}
|
{$foo*$bar}
|
||||||
|
|
||||||
{* alguns exemplos mais complicados *}
|
{* alguns exemplos mais complicados *}
|
||||||
|
|
||||||
{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
|
{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
|
||||||
|
|
||||||
{if ($foo+$bar.test%$baz*134232+10+$b+10)}
|
{if ($foo+$bar.test%$baz*134232+10+$b+10)}
|
||||||
|
|
||||||
{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
|
{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
|
||||||
|
|
||||||
{assign var="foo" value="`$foo+$bar`"}</programlisting>
|
{assign var="foo" value="`$foo+$bar`"}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -3,15 +3,15 @@
|
|||||||
<sect1 id="language.syntax.attributes">
|
<sect1 id="language.syntax.attributes">
|
||||||
<title>Atributos</title>
|
<title>Atributos</title>
|
||||||
<para>
|
<para>
|
||||||
A maioria das fun<75><6E>es levam atributos que especificam ou modificam o seu
|
A maioria das fun<75><6E>es cont<EFBFBD>m atributos que especificam ou modificam
|
||||||
funcionamento. Atributos para fun<75><6E>es Smarty s<>o muito parecidos como
|
o seu comportamento. Atributos para fun<75><6E>es do Smarty s<>o muito parecidos
|
||||||
atributos HTML. Valores est<73>ticos s<EFBFBD>o precisam estar entre aspas,
|
com atributos da HTML. Valores est<73>ticos n<EFBFBD>o precisam ficar entre aspas,
|
||||||
mas <20> recomendados para strings literais. Vari<72>veis tamb<6D>m podem ser
|
mas recomenda-se usar aspas para strings literais. Vari<72>veis tamb<6D>m podem
|
||||||
usadas, e n<>o precisam estar entre aspas.
|
ser usadas, e n<>o precisam estar entre aspas.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Alguns atributos requerem valores booleanos (true ou false). Estes podem
|
Alguns atributos exigem valores booleanos (verdadeiro ou falso). Estes valores
|
||||||
ser especificados sem aspas <literal>true</literal>,
|
podem ser especificados sem aspas <literal>true</literal>,
|
||||||
<literal>on</literal>, e <literal>yes</literal>, ou
|
<literal>on</literal>, e <literal>yes</literal>, ou
|
||||||
<literal>false</literal>, <literal>off</literal>, e
|
<literal>false</literal>, <literal>off</literal>, e
|
||||||
<literal>no</literal>.
|
<literal>no</literal>.
|
||||||
@@ -19,17 +19,20 @@
|
|||||||
<example>
|
<example>
|
||||||
<title>Sintaxe de atributos de fun<75><6E>es</title>
|
<title>Sintaxe de atributos de fun<75><6E>es</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{include file="header.tpl"}
|
<![CDATA[
|
||||||
|
{include file="cabecalho.tpl"}
|
||||||
|
|
||||||
{include file=$includeFile}
|
{include file=$arquivoInclude}
|
||||||
|
|
||||||
{include file=#includeFile#}
|
{include file=#arquivoInclude#}
|
||||||
|
|
||||||
{html_select_date display_days=yes}
|
{html_select_date display_days=yes}
|
||||||
|
|
||||||
<SELECT name=company>
|
<select name="empresa">
|
||||||
{html_options values=$vals selected=$selected output=$output}
|
{html_options values=$vals selected=$selected output=$output}
|
||||||
</SELECT></programlisting>
|
</select>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -3,27 +3,30 @@
|
|||||||
<sect1 id="language.syntax.comments">
|
<sect1 id="language.syntax.comments">
|
||||||
<title>Coment<EFBFBD>rios</title>
|
<title>Coment<EFBFBD>rios</title>
|
||||||
<para>
|
<para>
|
||||||
Coment<EFBFBD>rios de template s<EFBFBD>o cercados por asteriscos, e s<>o cercados por
|
Os coment<EFBFBD>rios do template ficam entre asteriscos dentro de delimitadores,
|
||||||
delimitadores, assim: {* este <20> um coment<6E>rio *}.
|
exemplo: {* este <20> um coment<6E>rio *}. Coment<6E>rios do Smarty n<>o s<>o
|
||||||
Coment<6E>rios Smarty n<>o s<>o mostrado na sa<73>da final do template.
|
exibidos no resultado final do template. Eles s<>o usados para fazer
|
||||||
Eles s<>o usados para fazer notas internas nos templates.
|
anota<EFBFBD><EFBFBD>es internas nos templates.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Coment<EFBFBD>rios</title>
|
<title>Coment<EFBFBD>rios</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
{* Smarty *}
|
{* Smarty *}
|
||||||
|
|
||||||
{* inclui o arquivo header aqui *}
|
{* inclua o arquivo de cabe<62>alho aqui *}
|
||||||
{include file="header.tpl"}
|
{include file="cabecalho.tpl"}
|
||||||
|
|
||||||
{include file=$includeFile}
|
{include file=$arquivoInclude}
|
||||||
|
|
||||||
{include file=#includeFile#}
|
{include file=#arquivoInclude#}
|
||||||
|
|
||||||
{* Mostra listas dropdown *}
|
{* mostra lista dropdown *}
|
||||||
<SELECT name=company>
|
<select name="empresa">
|
||||||
{html_options values=$vals selected=$selected output=$output}
|
{html_options values=$vals selected=$selected output=$output}
|
||||||
</SELECT></programlisting>
|
</select>
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -5,33 +5,35 @@
|
|||||||
<para>
|
<para>
|
||||||
Cada tag Smarty mostra uma
|
Cada tag Smarty mostra uma
|
||||||
<link linkend="language.variables">vari<EFBFBD>vel</link> ou utiliza algum tipo de
|
<link linkend="language.variables">vari<EFBFBD>vel</link> ou utiliza algum tipo de
|
||||||
fun<75><6E>o. Fun<75><6E>es s<>o processadas e mostradas colocando-se a fun<75><6E>o e seus
|
fun<75><6E>o. Fun<75><6E>es s<>o processadas e exibidas colocando-se a fun<75><6E>o e seus
|
||||||
atributos entre delimitadores, assim: {funcname
|
atributos entre delimitadores, exemplo: {funcname attr1="val" attr2="val"}.
|
||||||
attr1="val" attr2="val"}.
|
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Sintaxe de fun<75><6E>es</title>
|
<title>Sintaxe de fun<75><6E>es</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{config_load file="colors.conf"}
|
<![CDATA[
|
||||||
|
{config_load file="cores.conf"}
|
||||||
|
|
||||||
{include file="header.tpl"}
|
{include file="cabecalho.tpl"}
|
||||||
|
|
||||||
{if $highlight_name}
|
{if $enfase_nome}
|
||||||
Welcome, <font color="{#fontColor#}">{$name}!</font>
|
Seja bem-vindo, <font color="{#fontColor#}">{$nome}!</font>
|
||||||
{else}
|
{else}
|
||||||
Welcome, {$name}!
|
Seja bem-vindo, {$nome}!
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{include file="footer.tpl"}</programlisting>
|
{include file="rodape.tpl"}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
<para>
|
<para>
|
||||||
Ambas as fun<75><6E>es internas e as fun<75><6E>es customizadas tem a mesma sintaxe nos
|
Ambas as fun<75><6E>es internas e as fun<75><6E>es personalizadas tem a mesma sintaxe nos
|
||||||
templates. Fun<75><6E>es internas s<>o o funcionamento do Smarty,
|
templates. Fun<75><6E>es internas s<>o o funcionamento do Smarty,
|
||||||
assim como <command>if</command>, <command>section</command> e
|
tais como <command>if</command>, <command>section</command> e
|
||||||
<command>strip</command>. Elas n<>o podem ser modificadas. Fun<75><6E>es customizadas
|
<command>strip</command>. Elas n<>o podem ser modificadas. Fun<75><6E>es personalizadas
|
||||||
s<>o fun<75><6E>es adicionais implementadas por plugins. Elas podem ser modificadas
|
s<>o fun<75><6E>es adicionais implementadas por modo de plugins. Elas podem ser modificadas
|
||||||
como voc<6F> quiser, ou voc<6F> pode adionar novas. <command>html_options</command> e
|
como voc<6F> quiser, ou voc<6F> pode adionar novas. <command>html_options</command> e
|
||||||
<command>html_select_date</command> s<>o exemplos de fun<75><6E>es customizadas.
|
<command>html_select_date</command> s<>o exemplos de fun<75><6E>es personalizadas.
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -3,25 +3,28 @@
|
|||||||
<sect1 id="language.syntax.quotes">
|
<sect1 id="language.syntax.quotes">
|
||||||
<title>Colocando Vari<72>veis em Aspas Duplas</title>
|
<title>Colocando Vari<72>veis em Aspas Duplas</title>
|
||||||
<para>
|
<para>
|
||||||
Smarty ir<69> reconhecer vari<72>veis entre aspas duplas enquanto
|
Smarty ir<69> reconhecer vari<72>veis definidas entre asplas duplas enquanto
|
||||||
as vari<72>veis conterem apenas n<>meros, letras, sublinhados e conchetes
|
as vari<72>veis conterem apenas n<>meros, letras, sublinhados e conchetes [].
|
||||||
[]. Com qualquer outro caractere (pontos, referencia de objetos, etc.) as vari<72>veis
|
Com qualquer outro caractere (pontos, refer<EFBFBD>ncia <EFBFBD> objetos, etc.) a vari<72>vel
|
||||||
devem estar entre ap<61>strofos.
|
deve estar entre ap<61>strofos.
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Sintaxe entre aspas</title>
|
<title>Sintaxe entre aspas</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
EXEMPLOS DE SINTAXE:
|
<![CDATA[
|
||||||
{func var="test $foo test"} <-- v<> $foo
|
EXEMPLOS DE SYNTAX:
|
||||||
{func var="test $foo_bar test"} <-- v<> $foo_bar
|
{func var="teste $foo teste"} <-- mostra $foo
|
||||||
{func var="test $foo[0] test"} <-- v<> $foo[0]
|
{func var="teste $foo_bar teste"} <-- mostra $foo_bar
|
||||||
{func var="test $foo[bar] test"} <-- v<> $foo[bar]
|
{func var="teste $foo[0] teste"} <-- mostra $foo[0]
|
||||||
{func var="test $foo.bar test"} <-- v<> $foo (not $foo.bar)
|
{func var="teste $foo[bar] teste"} <-- mostra $foo[bar]
|
||||||
{func var="test `$foo.bar` test"} <-- v<> $foo.bar
|
{func var="teste $foo.bar teste"} <-- mostra $foo (not $foo.bar)
|
||||||
|
{func var="teste `$foo.bar` teste"} <-- mostra $foo.bar
|
||||||
|
|
||||||
EXEMPLOS PRATICOS:
|
EXEMPLOS PR<EFBFBD>TICOS:
|
||||||
{include file="subdir/$tpl_name.tpl"} <-- ir<69> substituir $tpl_name com o valor
|
{include file="subdir/$tpl_name.tpl"} <-- substitui $tpl_name pelo seu valor
|
||||||
{cycle values="one,two,`$smarty.config.myval`"} <-- deve ter ap<61>strofos</programlisting>
|
{cycle values="one,two,`$smarty.config.myval`"} <-- deve conter ap<61>strofos
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
</sect1>
|
</sect1>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
|
@@ -2,11 +2,11 @@
|
|||||||
<!-- $Revision$ -->
|
<!-- $Revision$ -->
|
||||||
<!-- EN-Revision: 1.3 Maintainer: nobody Status: ready -->
|
<!-- EN-Revision: 1.3 Maintainer: nobody Status: ready -->
|
||||||
<chapter id="language.builtin.functions">
|
<chapter id="language.builtin.functions">
|
||||||
<title>Fun<EFBFBD><EFBFBD>es Embutidas</title>
|
<title>Fun<EFBFBD><EFBFBD>es internas</title>
|
||||||
<para>
|
<para>
|
||||||
O Smarty vem com v<>rias fun<75><6E>es embutidas. Fun<75><6E>es embutidas fazem parte
|
O Smarty cont<EFBFBD>m v<>rias fun<75><6E>es internas. Fun<75><6E>es internas s<>o parte integral
|
||||||
da linguagem de template. Voc<6F> n<>o pode criar fun<75><6E>es personalizadas com
|
da linguagem de template. Voc<6F> n<>o pode criar fun<75><6E>es personalizadas com o
|
||||||
o mesmo nome, nem pode modificar as fun<EFBFBD><EFBFBD>es embutidas.
|
mesmo nome de uma fun<75><6E>o interna, e tamb<6D>m n<>o pode modificar fun<75><6E>es internas.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
&designers.language-builtin-functions.language-function-capture;
|
&designers.language-builtin-functions.language-function-capture;
|
||||||
|
@@ -3,18 +3,20 @@
|
|||||||
<chapter id="language.combining.modifiers">
|
<chapter id="language.combining.modifiers">
|
||||||
<title>Combinando Modificadores</title>
|
<title>Combinando Modificadores</title>
|
||||||
<para>
|
<para>
|
||||||
Voc<6F> pode aplicar qualquer n<>mero de modificadores para uma vari<72>vel. Eles ser<65>o
|
Voc<6F> pode aplicar a quantidade de moficadores que quiser <20> uma vari<72>vel. Eles ser<65>o aplicados
|
||||||
aplicados na ordem que eles foram combinados, da esquerda para a direita. Eles
|
na ordem em que foram combinados, da esquerda para direita. Eles devem ser separados
|
||||||
devem ser separados com um caractere <literal>|</literal> (pipe).
|
com o caracter <literal>|</literal> (pipe).
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Combinando Modificadores</title>
|
<title>combinando modificadores</title>
|
||||||
<programlisting>
|
<programlisting role="php">
|
||||||
|
<![CDATA[
|
||||||
index.php:
|
index.php:
|
||||||
|
<?php
|
||||||
$smarty = new Smarty;
|
$smarty = new Smarty;
|
||||||
$smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
|
$smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
|
||||||
$smarty->display('index.tpl');
|
$smarty->display('index.tpl');
|
||||||
|
?>
|
||||||
|
|
||||||
index.tpl:
|
index.tpl:
|
||||||
|
|
||||||
@@ -23,16 +25,21 @@ index.tpl:
|
|||||||
{$articleTitle|lower|spacify|truncate}
|
{$articleTitle|lower|spacify|truncate}
|
||||||
{$articleTitle|lower|truncate:30|spacify}
|
{$articleTitle|lower|truncate:30|spacify}
|
||||||
{$articleTitle|lower|spacify|truncate:30:". . ."}
|
{$articleTitle|lower|spacify|truncate:30:". . ."}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
MOSTRA:
|
<para>
|
||||||
|
O texto acima mostrar<61>:
|
||||||
|
</para>
|
||||||
|
<screen>
|
||||||
|
<![CDATA[
|
||||||
Smokers are Productive, but Death Cuts Efficiency.
|
Smokers are Productive, but Death Cuts Efficiency.
|
||||||
S M O K E R S A R E P R O D U C T I V E , B U T D E A T H C U T S E F F I C I E N C Y .
|
S M O K E R S A R E P R O D U C T I V E , B U T D E A T H C U T S E F F I C I E N C Y .
|
||||||
s m o k e r s a r e p r o d u c t i v e , b u t d e a t h c u t s...
|
s m o k e r s a r e p r o d u c t i v e , b u t d e a t h c u t s...
|
||||||
s m o k e r s a r e p r o d u c t i v e , b u t . . .
|
s m o k e r s a r e p r o d u c t i v e , b u t . . .
|
||||||
s m o k e r s a r e p. . .</programlisting>
|
s m o k e r s a r e p. . .
|
||||||
</example>
|
]]>
|
||||||
|
</screen>
|
||||||
|
</example>
|
||||||
</chapter>
|
</chapter>
|
||||||
<!-- Keep this comment at the end of the file
|
<!-- Keep this comment at the end of the file
|
||||||
Local variables:
|
Local variables:
|
||||||
|
@@ -3,8 +3,8 @@
|
|||||||
<chapter id="language.custom.functions">
|
<chapter id="language.custom.functions">
|
||||||
<title>Fun<EFBFBD><EFBFBD>es Personalizadas</title>
|
<title>Fun<EFBFBD><EFBFBD>es Personalizadas</title>
|
||||||
<para>
|
<para>
|
||||||
Smarty vem com v<>rias fun<75><6E>es personalizadas que voc<6F>
|
O Smarty cont<EFBFBD>m v<>rias fun<75><6E>es personalizadas que voc<6F>
|
||||||
pode usar em seus templates.
|
pode usar em seus templates.
|
||||||
</para>
|
</para>
|
||||||
&designers.language-custom-functions.language-function-assign;
|
&designers.language-custom-functions.language-function-assign;
|
||||||
&designers.language-custom-functions.language-function-counter;
|
&designers.language-custom-functions.language-function-counter;
|
||||||
|
@@ -3,55 +3,54 @@
|
|||||||
<chapter id="language.modifiers">
|
<chapter id="language.modifiers">
|
||||||
<title>Modificadores de vari<72>veis</title>
|
<title>Modificadores de vari<72>veis</title>
|
||||||
<para>
|
<para>
|
||||||
Modificadores de vari<72>veis podem ser aplicados a vari<72>veis, fun<75><6E>es customizadas
|
Modificadores de vari<72>veis podem ser aplicados a vari<72>veis, fun<75><6E>es personalizadas
|
||||||
ou strings. Para aplicar um modificador, especifique o valor seguido por
|
ou strings. Para aplicar um modificador, especifique o valor seguido por
|
||||||
<literal>|</literal>(pipe) e o nome do modificador. Um modificador aceita
|
<literal>|</literal>(pipe) e o nome do modificador. Um modificador aceita
|
||||||
par<61>metros adicionais que afetam o seu funcionamento. Estes par<61>metros seguem
|
par<61>metros adicionais que afetam o seu comportamento. Estes par<61>metros vem ap<61>s
|
||||||
o nome do modificador e s<>o separados por <literal>:</literal> (dois pontos).
|
o nome do modificador e s<>o separados por <literal>:</literal> (dois pontos).
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<title>Exemplo de modificador</title>
|
<title>Exemplo de modificador</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{* Transforma para mai<61>sculas *}
|
<![CDATA[
|
||||||
<h2>{$title|upper}</h2>
|
{* Faz o t<>tulo ficar com letras mai<61>sculas *}
|
||||||
|
<h2>{$titulo|upper}</h2>
|
||||||
|
|
||||||
{* Trunca o $topic para 40 caracteres usa ... no final *}
|
{* Faz com que $topico use somente 40 caracteres, e coloca ... no fim da frase *}
|
||||||
Topic: {$topic|truncate:40:"..."}
|
|
||||||
|
|
||||||
{* formata uma string literal *}
|
T<EFBFBD>pico: {$topico|truncate:40:"..."}
|
||||||
{"now"|date_format:"%Y/%m/%d"}
|
|
||||||
|
|
||||||
{* aplica um modificador para uma fun<EFBFBD><EFBFBD>o customizada *}
|
{* transforma a data em um formato leg<65>vel *}
|
||||||
{mailto|upper address="me@domain.dom"}</programlisting>
|
{"agora"|date_format:"%Y/%m/%d"}
|
||||||
|
|
||||||
|
{* aplica um modificador <20> uma fun<75><6E>o personalizada *}
|
||||||
|
{mailto|upper address="eu@dominio.dom"}
|
||||||
|
]]>
|
||||||
|
</programlisting>
|
||||||
</example>
|
</example>
|
||||||
<para>
|
<para>
|
||||||
Se voc<6F> aplicar um modificador para uma matriz ao inv<6E>s de o valor de uma vari<72>vel,
|
Se voc<6F> aplicar um modificador <EFBFBD> uma matriz ao inv<6E>s de aplicar ao valor de uma vari<72>vel,
|
||||||
o modificador vai ser aplicado em cada valor desta matriz. Se voc<6F> realmente quiser
|
o modificador vai ser aplicado <EFBFBD> cada valor da matriz especificada. Se voc<6F> quer que o modificador
|
||||||
que o funciona em uma matriz inteira, voc<6F> deve colocar um simbolo
|
use a matriz inteira como um valor, voc<6F> deve colocar o s<EFBFBD>mbolo <literal>@</literal> antes do
|
||||||
<literal>@</literal> antes do nome do modificador, assim como:
|
nome do modificador, como a seguir: <literal>{$tituloArtigo|@count}</literal>
|
||||||
<literal>{$articleTitle|@count}</literal> (isto ir<69> mostrar o n<>mero de elementos
|
(isto ir<69> mostrar o n<>mero de elementos na matriz $tituloArtigo).
|
||||||
na matriz $articleTitle.)
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Modificadores podem ser carregados automaticamente a partir do seu <link
|
Modificadores podem ser carregados automaticamente <EFBFBD> partir do seu <link
|
||||||
linkend="variable.plugins.dir">$plugins_dir</link> (veja tamb<6D>m:
|
linkend="variable.plugins.dir">$plugins_dir</link> (veja:
|
||||||
<link linkend="plugins.naming.conventions">Naming
|
<link linkend="plugins.naming.conventions">Nomes sugeridos</link>) ou podem ser
|
||||||
Conventions</link>) ou podem ser registrados explicitamente (veja: <link
|
registrados explicitamente (veja: <link
|
||||||
linkend="api.register.modifier">register_modifier</link>).
|
linkend="api.register.modifier">register_modifier</link>). Adicionalmente,
|
||||||
Adicionalmente, todas as fun<75><6E>es do php podem ser utilizadas como
|
todas as fun<75><6E>es php podem ser utiliadas como modificadores implicitamente. (O
|
||||||
modificadores implicitamente. (O exemplo
|
exemplo do <literal>@count</literal> acima usa a fun<75><6E>o count do php e n<>o
|
||||||
<literal>@count</literal> acima usa atualmente a fun<75><6E>o count
|
um modificador do Smarty). Usar fun<75><6E>es do php como modificadores tem dois
|
||||||
do php e n<>o um modificador do Smarty). Usar fun<75><6E>es do
|
pequenos problemas: Primeiro: <20>s vezes a ordem dos par<61>metros da fun<75><6E>o
|
||||||
php como modificadores tem dois pequenos problemas: Primeiro, algumas
|
n<EFBFBD>o <20> a desejada (<literal>{"%2.f"|sprintf:$float}</literal> atualmente funciona,
|
||||||
vezes a ordem dos par<61>metros da fun<75><6E>o n<>o <20> a desejavel
|
mas o melhor seria algo mais intuitivo. Por exemplo: <literal>{$float|string_format:"%2.f"}</literal>
|
||||||
(<literal>{"%2.f"|sprintf:$float}</literal> atualmente funciona, mas pede algo
|
que <20> disponibilizado na distribui<75><69>o do Smarty). Segundo: com a vari<72>vel
|
||||||
mais intuitivo <literal>{Por exemplo:
|
<link linkend="variable.security">$security</link> ativada em todas as fun<75><6E>es do
|
||||||
$float|string_format:"%2.f"}</literal> que <20> provido pela distribui<75><69>o
|
php que s<>o usadas como modificadores precisam ser declaradas como confi<66>veis (trusted)
|
||||||
do Smarty). Segundo: com <link
|
na matriz <link linkend="variable.security.settings">$security_settings['MODIFIER_FUNCS']</link>.
|
||||||
linkend="variable.security">$security</link> ativado, todas as fun<75><6E>es do
|
|
||||||
php que sejam utilizados como modificadores devem ser declaradas como
|
|
||||||
confi<66>veis na matriz <link linkend="variable.security.settings">
|
|
||||||
$security_settings['MODIFIER_FUNCS']</link>.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
&designers.language-modifiers.language-modifier-capitalize;
|
&designers.language-modifiers.language-modifier-capitalize;
|
||||||
|
@@ -4,21 +4,21 @@
|
|||||||
<chapter id="language.variables">
|
<chapter id="language.variables">
|
||||||
<title>Vari<EFBFBD>veis</title>
|
<title>Vari<EFBFBD>veis</title>
|
||||||
<para>
|
<para>
|
||||||
O Smarty tem v<>rios tipos diferentes de vari<72>veis. O tipo de vari<72>vel depende de
|
No Smarty h<EFBFBD> v<>rios tipos diferentes de vari<72>veis. O tipo da vari<72>vel depende do prefixo que
|
||||||
de qual s<>mbolo esta prefixada(ou cercada).
|
ela usa (ou do s<>mbolo pelo qual ela est<73> contida).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Vari<72>veis no Smarty podem ser mostradas diretamente ou usada como argumentos para
|
Vari<72>veis no Smarty podem tanto serem exibidas diretamente ou usadas como argumentos
|
||||||
atributos de fun<75><6E>es e modificadores, dentro de express<73>es condicionais, etc.
|
para atributos de fun<75><6E>es e modificadores, dentro de express<73>es condicionais, etc.
|
||||||
Para mostrar uma vari<72>vel, simplesmente coloque ela entre delimitadores sendo que
|
Para que uma vari<72>vel seja exibida o nome dela deve estar dentro dos delimitadores
|
||||||
ela seja a <20>nica coisa entre eles. Exemplos:
|
e n<>o pode conter nenhum outro caracter. Veja os exemplos abaixo:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
{$Name}
|
{$Nome}
|
||||||
|
|
||||||
{$Contacts[row].Phone}
|
{$Contatos[row].Telefone}
|
||||||
|
|
||||||
<body bgcolor="{#bgcolor#}">
|
<body bgcolor="{#cordefundo#}">
|
||||||
]]>
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
@@ -5,41 +5,45 @@
|
|||||||
<chapter id="what.is.smarty">
|
<chapter id="what.is.smarty">
|
||||||
<title>O que <20> o Smarty?</title>
|
<title>O que <20> o Smarty?</title>
|
||||||
<para>
|
<para>
|
||||||
Smarty uma ferramenta de template para PHP. Mais especificamente, ela facilita
|
O Smarty <EFBFBD> um sistema de templates para PHP. Mais especificamente, ele fornece uma maneira
|
||||||
uma forma control<EFBFBD>vel de separar a aplica<63><61>o l<>gica e o conte<74>do de sua apresenta<74><61>o.
|
f<EFBFBD>cil de controlar a separa<EFBFBD><EFBFBD>o da aplica<63><61>o l<>gica e o conte<74>do de sua apresenta<74><61>o. Isto <20>
|
||||||
Isto <20> melhor descrito em uma situa<75><61>o onde o programador da aplica<63><61>o e o designer
|
melhor descrito em uma situa<75><61>o onde o programador da aplica<63><61>o e o designer do template executam
|
||||||
do template executam diferentes fun<75><6E>es, ou na maioria dos casos n<>o s<>o a mesma pessoa.
|
diferentes fun<75><6E>es, ou na maioria dos casos n<>o s<>o a mesma pessoa. Por exemplo, digamos que voc<6F>
|
||||||
Por exemplo, digamos que voc<6F> est<EFBFBD> criando uma p<>gina que est<73> mostrando um artigo de
|
est<73> criando uma p<>gina para web para mostrar um artigo de um jornal. O autor, a manchete,
|
||||||
jornal. O autor, a manchete, a conclus<75>o e o corpo do artigo s<>o elementos de conte<74>do, eles
|
a conclus<75>o e o corpo do artigo s<>o elementos de conte<74>do, eles n<>o cont<6E>m informa<6D><61>o alguma
|
||||||
n<EFBFBD>o cont<6E>m informa<6D><61>o sobre como eles ser<EFBFBD>o apresentados. Eles s<>o passados para o Smarty
|
sobre como eles devem ser mostrados. Ele s<>o enviados ao Smarty pela aplica<63><61>o, ent<6E>o o designer
|
||||||
pela aplica<63><61>o, ent<6E>o o designer de template edita o template e usa uma combina<6E><61>o de tags
|
do template edita o template e usa uma combina<6E><61>o de tags HTML e tags de templates para formatar
|
||||||
HTML e tags de template para formatar a apresenta<74><61>o destes elementos (tabelas HTML, cores
|
a apresenta<74><61>o destes elementos (tabelas HTML, cores de fundo, tamanhos de fontes, folhas de estilos, etc.).
|
||||||
de planos de fundo, tamanhos da fonte, folhas de estilos, etc.).
|
Se algum dia o programador precisar alterar a maneira como o conte<74>do do artigo <20> tratado (uma mudan<61>a na
|
||||||
Quando o programador necessita
|
l<EFBFBD>gica da aplica<63><61>o). Esta mudan<61>a n<>o afeta o design do template, o conte<74>do ser<65> enviado ao template
|
||||||
mudar a forma em que o conte<74>do do artigo <20>
|
exatamente da mesma forma. De modo semelhante, se o designer do template quiser redesenhar completamente
|
||||||
devolvido (uma mudan<61>a da l<>gica da aplica<63><61>o.) Esta
|
os templates, n<>o <20> necess<73>ria nenhuma altera<72><61>o na l<>gica da aplica<63><61>o. Sendo assim, o programador
|
||||||
mudan<61>a n<EFBFBD>o afeta o designer do template, o conte<74>do ainda chegar<61> no template exatamente da
|
pode fazer mudan<EFBFBD>as na l<>gica da aplica<63><61>o sem a necessidade de reestruturar os templates, e o designer
|
||||||
mesma forma. De modo semelhante, se o designer de template quer redesenhar completamente
|
do template pode fazer mudan<61>as nos templates sem alterar a l<>gica da aplica<63><61>o.
|
||||||
o template, isto n<>o requer mudan<61>as na l<>gica da aplica<63><61>o. Ent<6E>o o programador pode fazer
|
|
||||||
mudan<61>as na l<>gica da aplica<63><61>o sem precisar reestruturar os templates,
|
|
||||||
e o designer de template
|
|
||||||
pode fazer mudan<61>as no template sem quebrar a l<>gica da aplica<63><61>o.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
Um objetivo do projeto Smarty <20> a separa<72><61>o da l<>gica do neg<65>cio e da l<>gica da apresenta<74><61>o.
|
||||||
|
Isto significa que os templates podem certamente conter a l<>gica sob a circunst<73>ncia que <20> somente
|
||||||
|
para apresenta<74><61>o. Alguns exemplos s<>o: a inclus<75>o de outros templates, alterna<6E><61>o de cores nas linhas
|
||||||
|
das tabelas, colocar o texto de uma vari<72>vel em mai<61>sculo, percorrer uma matriz de dados e mostr<74>-la, etc.
|
||||||
|
s<>o todos exemplos de apresenta<74><61>o l<>gica. Isto n<>o significa que o Smarty for<6F>a a separa<72><61>o da l<>gica de
|
||||||
|
neg<65>cios e da l<>gica de apresenta<74><61>o. O Smarty n<>o tem conhecimento do que <20> o que em sua aplica<63><61>o, portanto
|
||||||
|
colocar sua a l<>gica de neg<65>cio no template <20> problema seu. Caso voc<6F> deseje que n<>o haja NENHUMA l<>gica
|
||||||
|
em seus templates voc<6F> pode certamente fazer isso trocando o conte<74>do para textos e vari<72>veis somente.
|
||||||
|
<!-- ficou legal o texto abaixo, mas n<>o segue exatamente toda tradu<64><75>o, espero aprova<76><61>o do meu acima, ou mistura entre os dois:
|
||||||
Agora um resumo sobre o que o Smarty faz e N<>O faz. O Smarty n<>o tenta separar completamente
|
Agora um resumo sobre o que o Smarty faz e N<>O faz. O Smarty n<>o tenta separar completamente
|
||||||
a l<>gica dos templates. N<>o h<> problema com a l<>gica em seus templates sob a condi<64><69>o de que
|
a l<>gica dos templates. N<>o h<> problema com a l<>gica em seus templates sob a condi<64><69>o de que
|
||||||
esta l<>gica seja estritamente para apresenta<74><61>o. Uma palavra de aviso: mantenha a l<>gica
|
esta l<>gica seja estritamente para apresenta<74><61>o. Uma palavra de aviso: mantenha a l<>gica
|
||||||
fora dos templates, e a l<>gica da apresenta<74><61>o fora da aplica<63><61>o. Isto definitivamente
|
fora dos templates, e a l<>gica da apresenta<74><61>o fora da aplica<63><61>o. Isto definitivamente
|
||||||
manter<65> as coisas mais manipul<75>veis
|
manter<65> as coisas mais manipul<75>veis
|
||||||
e escal<61>veis para o futuro pr<70>ximo.
|
e escal<61>veis para o futuro pr<70>ximo. -->
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Um dos aspectos <20>nicos sobre o Smarty <20> a compila<6C><61>o do template. Isto significa que o
|
Um dos aspectos <20>nicos do Smarty <20> seu sistema de compila<6C><61>o de templates. O Smarty l<> os arquivos
|
||||||
Smarty l<> os arquivos de template e cria scripts PHP a partir deles. Uma vez criados, eles
|
de templates e cria scripts PHP <EFBFBD> partir deles. Uma vez criados, eles s<EFBFBD>o executados sem ser necess<73>rio
|
||||||
s<EFBFBD>o executados. Ent<6E>o n<>o h<> interpreta<74><61>o de arquivo de
|
uma outra compila<6C><61>o do template novamente. Com isso, os arquivos de template n<>o s<>o 'parseados'(analisados)
|
||||||
template custosa para cada pedido, e
|
toda vez que um template <20> solicitado, e cada template tem a total vantagem de solu<6C><75>es de cache do
|
||||||
cada template pode levar total vantagem de solu<6C><75>es de cache de compiladores PHP tais como
|
compilador PHP, tais como: Zend Accelerator (<ulink url="&url.zend;">&url.zend;</ulink>) ou PHP Accelerator
|
||||||
Zend Accelerator (<ulink url="&url.zend;">&url.zend;</ulink>) ou PHP Accelerator
|
|
||||||
(<ulink url="&url.php-accelerator;">&url.php-accelerator;</ulink>).
|
(<ulink url="&url.php-accelerator;">&url.php-accelerator;</ulink>).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@@ -47,25 +51,16 @@
|
|||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para>Ele <20> extremamente r<>pido.</para></listitem>
|
<listitem><para>Ele <20> extremamente r<>pido.</para></listitem>
|
||||||
<listitem><para>Ele <20> eficiente visto que
|
<listitem><para>Ele <20> eficiente visto que o interpretador do PHP faz o trabalho mais pesado.</para></listitem>
|
||||||
o interpretador de PHP faz o trabalho mais chato.</para></listitem>
|
|
||||||
<listitem><para>Sem elevadas interpreta<74><61>es de template, apenas compila uma vez.</para></listitem>
|
<listitem><para>Sem elevadas interpreta<74><61>es de template, apenas compila uma vez.</para></listitem>
|
||||||
<listitem><para>Ele est<73> atento para s<> recompilar os arquivos de template que
|
<listitem><para>Ele est<73> atento para s<> recompilar os arquivos de template que foram mudados.</para></listitem>
|
||||||
foram mudados.</para></listitem>
|
<listitem><para>Voc<EFBFBD> pode criar <link linkend="language.custom.functions">fun<EFBFBD><EFBFBD>es customizadas</link> e <link linkend="language.modifiers">modificadores de vari<72>veis</link> customizados, de modo que a linguagem de template <20> extremamente extens<6E>vel.</para></listitem>
|
||||||
<listitem><para>Voc<EFBFBD> pode criar <link linkend="language.custom.functions">fun<EFBFBD><EFBFBD>es customizadas
|
<listitem><para>Delimitadores de tag configur<75>veis, sendo assim voc<6F> pode usar {}, {{}}, <!--{}-->, etc.</para></listitem>
|
||||||
</link> e <link linkend="language.modifiers">modificadores de vari<72>veis
|
<listitem><para>Os construtoress if/elseif/else/endif s<>o passados para o interpretador de PHP, assim a sintaxe de express<73>o {if ...} pode ser tanto simples quanto complexa da forma que voc<6F> queira.</para></listitem>
|
||||||
</link> customizados, de modo que a linguagem de template <20> extremamente extens<6E>vel.</para></listitem>
|
|
||||||
<listitem><para>Sintaxe de tag delimitadora de template configur<75>vel, assim voc<6F> pode usar
|
|
||||||
{}, {{}}, <!--{}-->, etc.</para></listitem>
|
|
||||||
<listitem><para>Os construtoress if/elseif/else/endif s<>o passados para o interpretador de PHP,
|
|
||||||
assim a sintaxe de express<73>o {if ...} pode ser tanto simples quanto complexa da forma que voc<6F>
|
|
||||||
queira.</para></listitem>
|
|
||||||
<listitem><para>Aninhamento ilimitado de sections, ifs, etc. permitidos.</para></listitem>
|
<listitem><para>Aninhamento ilimitado de sections, ifs, etc. permitidos.</para></listitem>
|
||||||
<listitem><para><EFBFBD> poss<73>vel embutir o c<>digo PHP diretamente em seus arquivos de template,
|
<listitem><para><EFBFBD> poss<73>vel embutir o c<>digo PHP diretamente em seus arquivos de template, apesar de que isto pode n<>o ser necess<73>rio (n<>o recomendado) visto que a ferramenta <20> t<>o customiz<69>vel.</para></listitem>
|
||||||
apesar de que isto pode n<>o ser necess<73>rio (n<>o recomendado)
|
|
||||||
visto que a ferramenta <20> t<>o customiz<69>vel.</para></listitem>
|
|
||||||
<listitem><para>Suporte de caching embutido</para></listitem>
|
<listitem><para>Suporte de caching embutido</para></listitem>
|
||||||
<listitem><para>Fontes de template arbitr<74>rias</para></listitem>
|
<listitem><para>Fontes de template arbitr<74>rios</para></listitem>
|
||||||
<listitem><para>Fun<EFBFBD><EFBFBD>es de manipula<6C><61>o de cache customizadas</para></listitem>
|
<listitem><para>Fun<EFBFBD><EFBFBD>es de manipula<6C><61>o de cache customizadas</para></listitem>
|
||||||
<listitem><para>Arquitetura de Plugin</para></listitem>
|
<listitem><para>Arquitetura de Plugin</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
@@ -74,7 +69,7 @@
|
|||||||
<title>Instala<EFBFBD><EFBFBD>o</title>
|
<title>Instala<EFBFBD><EFBFBD>o</title>
|
||||||
|
|
||||||
<sect1 id="installation.requirements">
|
<sect1 id="installation.requirements">
|
||||||
<title>Requerimentos</title>
|
<title>Requisitos</title>
|
||||||
<para>
|
<para>
|
||||||
Smarty requer um servidor web rodando o PHP 4.0.6 superior.
|
Smarty requer um servidor web rodando o PHP 4.0.6 superior.
|
||||||
</para>
|
</para>
|
||||||
@@ -84,7 +79,7 @@
|
|||||||
<title>Instala<EFBFBD><EFBFBD>o B<>sica</title>
|
<title>Instala<EFBFBD><EFBFBD>o B<>sica</title>
|
||||||
<para>
|
<para>
|
||||||
Instale os arquivos da biblioteca do Smarty que est<73>o no diret<65>rio /libs/ da
|
Instale os arquivos da biblioteca do Smarty que est<73>o no diret<65>rio /libs/ da
|
||||||
distribui<75><69>o. Estes s<>o os arquivos PHP que voc<6F> N<>O EDITARIA. Eles s<>o comuns
|
distribui<75><69>o. Estes s<>o os arquivos PHP que voc<6F> N<>O PRECISA editar. Eles s<>o comuns
|
||||||
a todas as aplica<63><61>es e eles s<> s<>o atualizados quando voc<6F> atualiza para uma nova
|
a todas as aplica<63><61>es e eles s<> s<>o atualizados quando voc<6F> atualiza para uma nova
|
||||||
vers<72>o do Smarty.
|
vers<72>o do Smarty.
|
||||||
</para>
|
</para>
|
||||||
@@ -96,19 +91,19 @@ Smarty_Compiler.class.php
|
|||||||
Config_File.class.php
|
Config_File.class.php
|
||||||
debug.tpl
|
debug.tpl
|
||||||
/core/*.php (todos eles)
|
/core/*.php (todos eles)
|
||||||
/plugins/*.php (todos eles)</screen>
|
/plugins/*.php (todos eles)
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
O Smarty utiliza uma constante do PHP chamada <link
|
O Smarty utiliza uma constante do PHP chamada <link
|
||||||
linkend="constant.smarty.dir">SMARTY_DIR</link> que <20> o caminho para diret<65>rio da
|
linkend="constant.smarty.dir">SMARTY_DIR</link> que <20> o caminho para diret<65>rio da
|
||||||
biblioteca do Smarty. Basicamente, se sua aplica<63><61>o pode encontrar o arquivo
|
biblioteca do Smarty. Basicamente, se sua aplica<63><61>o pode encontrar o arquivo
|
||||||
<emphasis>Smarty.class.php</emphasis>, voc<6F> n<>o precisa definir o
|
<emphasis>Smarty.class.php</emphasis>, voc<6F> n<>o precisa definir a constante
|
||||||
SMARTY_DIR, Smarty encontrar<EFBFBD>-lo. Ent<6E>o, se <emphasis>Smarty.class.php</emphasis> n<EFBFBD>o est<73>
|
SMARTY_DIR, o Smarty ir<EFBFBD> localiz<69>-la sozinho. Sendo assim, se o arquivo <emphasis>Smarty.class.php</emphasis>
|
||||||
em seu include_path, ou voc<6F> n<>o fornece um caminho absoluto para ele em sua aplica<63><61>o, ent<6E>o
|
n<EFBFBD>o est<73> em seu include_path, ou voc<6F> n<>o fornece um caminho absoluto para ele em sua aplica<63><61>o, ent<6E>o
|
||||||
voc<6F> deve definir o SMARTY_DIR manualmente.
|
voc<6F> deve definir a constante SMARTY_DIR manualmente. A constante SMARTY_DIR <emphasis>deve</emphasis>
|
||||||
SMARTY_DIR <emphasis>deve</emphasis> incluir uma
|
conter uma barra de seguimento.
|
||||||
barra de seguimento.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Aqui est<73> um exemplo de como voc<6F> cria uma inst<73>ncia do Smarty em seus scripts PHP:
|
Aqui est<73> um exemplo de como voc<6F> cria uma inst<73>ncia do Smarty em seus scripts PHP:
|
||||||
@@ -118,12 +113,13 @@ debug.tpl
|
|||||||
<title>Cria uma inst<73>ncia Smarty do Smarty</title>
|
<title>Cria uma inst<73>ncia Smarty do Smarty</title>
|
||||||
<screen>
|
<screen>
|
||||||
require('Smarty.class.php');
|
require('Smarty.class.php');
|
||||||
$smarty = new Smarty;</screen>
|
$smarty = new Smarty;
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Tente rodar o script acima. Se voc<6F> obtiver um erro dizendo que o arquivo
|
Tente rodar o script acima. Se voc<6F> obtiver um erro dizendo que o arquivo
|
||||||
<emphasis>Smarty.class.php</emphasis> file could not be found, voc<6F> tem que fazer uma
|
<emphasis>Smarty.class.php</emphasis> n<EFBFBD>o p<>de ser encontrado, voc<6F> tem que fazer uma
|
||||||
das coisas a seguir:
|
das coisas a seguir:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -131,7 +127,8 @@ $smarty = new Smarty;</screen>
|
|||||||
<title>Fornecer um caminho absoluto para o arquivo da biblioteca</title>
|
<title>Fornecer um caminho absoluto para o arquivo da biblioteca</title>
|
||||||
<screen>
|
<screen>
|
||||||
require('/usr/local/lib/php/Smarty/Smarty.class.php');
|
require('/usr/local/lib/php/Smarty/Smarty.class.php');
|
||||||
$smarty = new Smarty;</screen>
|
$smarty = new Smarty;
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
@@ -141,7 +138,8 @@ $smarty = new Smarty;</screen>
|
|||||||
// para o include_path e reinicie o servidor web.
|
// para o include_path e reinicie o servidor web.
|
||||||
// Ent<6E>o o c<>digo a seguir funcionaria:
|
// Ent<6E>o o c<>digo a seguir funcionaria:
|
||||||
require('Smarty.class.php');
|
require('Smarty.class.php');
|
||||||
$smarty = new Smarty;</screen>
|
$smarty = new Smarty;
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
@@ -149,7 +147,8 @@ $smarty = new Smarty;</screen>
|
|||||||
<screen>
|
<screen>
|
||||||
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
|
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
|
||||||
require(SMARTY_DIR.'Smarty.class.php');
|
require(SMARTY_DIR.'Smarty.class.php');
|
||||||
$smarty = new Smarty;</screen>
|
$smarty = new Smarty;
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -165,11 +164,10 @@ $smarty = new Smarty;</screen>
|
|||||||
para cada aplica<63><61>o que utilizar<61> o Smarty.
|
para cada aplica<63><61>o que utilizar<61> o Smarty.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Certifique-se que voc<6F> sabe a localiza<7A><61>o do document root do seu servidor web. Em nosso exemplo,
|
Certifique-se que voc<6F> sabe a localiza<7A><61>o do 'document root' do seu servidor web. Em nosso exemplo,
|
||||||
o document root <20> "/web/www.mydomain.com/docs/". Os diret<65>rios do Smarty
|
o 'document root' <20> "/web/www.mydomain.com/docs/". Os diret<65>rios do Smarty
|
||||||
s<> s<>o acessados pela biblioteca do Smarty e nunca acessados diretamente pelo navegador. Ent<6E>o para
|
s<> s<>o acessados pela biblioteca do Smarty e nunca acessados diretamente pelo navegador. Ent<6E>o para
|
||||||
evitar qualquer preocupa<70><61>o com seguran<61>a,
|
evitar qualquer preocupa<70><61>o com seguran<61>a, <EFBFBD> recomendado colocar estes diret<65>rios
|
||||||
<09> recomendado colocar estes diret<65>rios
|
|
||||||
<emphasis>fora</emphasis> do document root.
|
<emphasis>fora</emphasis> do document root.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@@ -181,10 +179,10 @@ $smarty = new Smarty;</screen>
|
|||||||
"/web/www.mydomain.com/smarty/guestbook/".
|
"/web/www.mydomain.com/smarty/guestbook/".
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Voc<6F> precisar<61> pelo menos de um arquivo dentro de seu document root, e que seja acessado pelo
|
Voc<6F> precisar<61> pelo menos de um arquivo dentro de seu 'document root', e que seja acessado pelo
|
||||||
navegador. N<>s chamamos nosso
|
navegador. N<>s chamamos nosso
|
||||||
script de "index.php", e o colocamos em um subdiret<65>rio dentro
|
script de "index.php", e o colocamos em um subdiret<65>rio dentro
|
||||||
do document root chamado "/guestbook/".
|
do 'document root' chamado "/guestbook/".
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
@@ -204,7 +202,7 @@ $smarty = new Smarty;</screen>
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<example>
|
<example>
|
||||||
<title>Exemple de estrutura de arquivo</title>
|
<title>Exemplo de estrutura de arquivo</title>
|
||||||
<screen>
|
<screen>
|
||||||
/usr/local/lib/php/Smarty/Smarty.class.php
|
/usr/local/lib/php/Smarty/Smarty.class.php
|
||||||
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
|
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
|
||||||
@@ -218,7 +216,8 @@ $smarty = new Smarty;</screen>
|
|||||||
/web/www.mydomain.com/smarty/guestbook/configs/
|
/web/www.mydomain.com/smarty/guestbook/configs/
|
||||||
/web/www.mydomain.com/smarty/guestbook/cache/
|
/web/www.mydomain.com/smarty/guestbook/cache/
|
||||||
|
|
||||||
/web/www.mydomain.com/docs/guestbook/index.php</screen>
|
/web/www.mydomain.com/docs/guestbook/index.php
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -238,7 +237,8 @@ chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
|
|||||||
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
|
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
|
||||||
|
|
||||||
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
|
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
|
||||||
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/</screen>
|
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
@@ -252,7 +252,7 @@ chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/</screen>
|
|||||||
</note>
|
</note>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
N<>s precisamos criar o arquivoindex.tpl que o Smarty vai ler. Ele estar<61> localizado em seu
|
N<>s precisamos criar o arquivo index.tpl que o Smarty vai ler. Ele estar<61> localizado em seu
|
||||||
$template_dir.
|
$template_dir.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -262,7 +262,8 @@ chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/</screen>
|
|||||||
|
|
||||||
{* Smarty *}
|
{* Smarty *}
|
||||||
|
|
||||||
Ol<EFBFBD>, {$nome}!</screen>
|
Ol<EFBFBD>, {$nome}!
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
|
|
||||||
@@ -272,13 +273,12 @@ Ol
|
|||||||
{* Smarty *} <20> um coment<6E>rio de template. Ele n<>o <20> exigido, mas <20> uma pr<70>tica boa
|
{* Smarty *} <20> um coment<6E>rio de template. Ele n<>o <20> exigido, mas <20> uma pr<70>tica boa
|
||||||
iniciar todos os seus arquivos de template com este com este coment<6E>rio. Isto faz com
|
iniciar todos os seus arquivos de template com este com este coment<6E>rio. Isto faz com
|
||||||
que o arquivo seja reconhecido sem levar em considera<72><61>o a sua extens<6E>o. Por exemplo,
|
que o arquivo seja reconhecido sem levar em considera<72><61>o a sua extens<6E>o. Por exemplo,
|
||||||
editores de texto poderiam reconhecer
|
editores de texto poderiam reconhecer o arquivo e habilitar colora<72><61>o de sintaxe especial.
|
||||||
o arquivo e habilitar ilumina<6E><61>o de sintaxe especial.
|
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Agora vamos editar index.php. N<>s criaremos uma inst<73>ncia do Smarty, daremos valor <20>s vari<72>veis
|
Agora vamos editar index.php. N<>s criaremos uma inst<73>ncia do Smarty, atribuiremos valores <20>s vari<72>veis
|
||||||
de template e mostraremos o arquivo index.tpl. Em nosso ambiente de exemplo,
|
de template e mostraremos o arquivo index.tpl. Em nosso ambiente de exemplo,
|
||||||
"/usr/local/lib/php/Smarty" <20> o nosso include_path. Certifique-se de ter feito o mesmo, ou use
|
"/usr/local/lib/php/Smarty" <20> o nosso include_path. Certifique-se de ter feito o mesmo, ou use
|
||||||
caminhos absolutos.
|
caminhos absolutos.
|
||||||
@@ -287,7 +287,7 @@ Ol
|
|||||||
<example>
|
<example>
|
||||||
<title>Editando /web/www.mydomain.com/docs/guestbook/index.php</title>
|
<title>Editando /web/www.mydomain.com/docs/guestbook/index.php</title>
|
||||||
<screen>
|
<screen>
|
||||||
// ler a biblioteca do Smarty
|
// carregar a biblioteca do Smarty
|
||||||
require('Smarty.class.php');
|
require('Smarty.class.php');
|
||||||
|
|
||||||
$smarty = new Smarty;
|
$smarty = new Smarty;
|
||||||
@@ -297,9 +297,10 @@ $smarty->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
|
|||||||
$smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
|
$smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
|
||||||
$smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';
|
$smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';
|
||||||
|
|
||||||
$smarty->assign('nome','Taniel');
|
$smarty->assign('nome','Thomas');
|
||||||
|
|
||||||
$smarty->display('index.tpl');</screen>
|
$smarty->display('index.tpl');
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
@@ -308,30 +309,29 @@ $smarty->display('index.tpl');</screen>
|
|||||||
Em nosso exemplo, n<>s estamos configurando caminhos absolutos para todos os diret<65>rios
|
Em nosso exemplo, n<>s estamos configurando caminhos absolutos para todos os diret<65>rios
|
||||||
do Smarty. Se '/web/www.mydomain.com/smarty/guestbook/' est<73> dentro de seu include_path
|
do Smarty. Se '/web/www.mydomain.com/smarty/guestbook/' est<73> dentro de seu include_path
|
||||||
do PHP, ent<6E>o estas configura<72><61>es n<>o s<>o necess<73>rias. Entretanto, isto <20> mais eficiente
|
do PHP, ent<6E>o estas configura<72><61>es n<>o s<>o necess<73>rias. Entretanto, isto <20> mais eficiente
|
||||||
e (a experi<72>ncia mostra) tem menos tend<6E>ncia a erros em rela<6C><61>o <20> defini<6E><69>o de caminhos
|
e (a experi<72>ncia mostra) menos tend<6E>ncia a erros em rela<6C><61>o <20> defini<6E><69>o de caminhos
|
||||||
absolutos. Isto garante que o
|
absolutos. Isto garante que o Smarty est<73> obtendo os arquivos dos diret<65>rios que voc<6F> deseja.
|
||||||
Smarty est<73> pegando arquivos do diret<65>rio que voc<6F> deseja.
|
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Agora l<EFBFBD> o arquivo index.php de seu navegador.
|
Agora carregue o arquivo index.php em seu navegador.
|
||||||
Voc<6F> veria "Ol<4F>, Taniel!"
|
Voc<6F> veria "Ol<4F>, Thomas!"
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Voc<6F> completou a configura<72><61>o b<>sica para o Smarty!
|
Voc<6F> completou a configura<72><61>o b<>sica para o Smarty!
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1 id="installing.smarty.extended">
|
<sect1 id="installing.smarty.extended">
|
||||||
<title>Expandindo a configura<72><61>o</title>
|
<title>Estendendo a configura<72><61>o</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Esta <20> uma continua<75><61>o da <link
|
Esta <20> uma continua<75><61>o da <link
|
||||||
linkend="installing.smarty.basic">instala<EFBFBD><EFBFBD>o b<>sica</link>,
|
linkend="installing.smarty.basic">instala<EFBFBD><EFBFBD>o b<>sica</link>,
|
||||||
por favor leia ela primeiro!
|
por favor leia a instala<6C><61>o b<>sica primeiro!
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Uma forma um pouco mais flex<65>vel de configurar o Smarty <20> expandir a classe e inicializar seu ambiente de
|
Uma forma um pouco mais flex<65>vel de configurar o Smarty <20> estender a classe e inicializar seu ambiente de
|
||||||
Smarty. Ent<6E>o, ao inv<6E>s de configurar caminhos de diret<65>rios repetidamente, preencher as mesmas vari<72>veis,
|
Smarty. Ent<6E>o, ao inv<6E>s de configurar caminhos de diret<65>rios repetidamente, preencher as mesmas vari<72>veis,
|
||||||
etc., n<>s podemos fazer isso para facilitar. Vamos criar um novo diret<65>rio "/php/includes/guestbook/" e criar um
|
etc., n<>s podemos fazer isso para facilitar. Vamos criar um novo diret<65>rio "/php/includes/guestbook/" e criar um
|
||||||
novo arquivo chamado "setup.php". Em nosso ambiente de exemplo, "/php/includes" est<73> em nosso
|
novo arquivo chamado "setup.php". Em nosso ambiente de exemplo, "/php/includes" est<73> em nosso
|
||||||
@@ -343,10 +343,10 @@ $smarty->display('index.tpl');</screen>
|
|||||||
<title>Editando /php/includes/guestbook/setup.php</title>
|
<title>Editando /php/includes/guestbook/setup.php</title>
|
||||||
<screen>
|
<screen>
|
||||||
|
|
||||||
// l<EFBFBD> a biblioteca do Smarty
|
// carrega a biblioteca do Smarty
|
||||||
require('Smarty.class.php');
|
require('Smarty.class.php');
|
||||||
|
|
||||||
// O arquivo setup.php <20> uma boa forma para ler
|
// O arquivo setup.php <20> uma boa forma para carregar
|
||||||
// arquivos de bibliotecas da aplica<63><61>o exigida, e voc<6F> pode fazer
|
// arquivos de bibliotecas da aplica<63><61>o exigida, e voc<6F> pode fazer
|
||||||
// isso corretamente aqui. Um exemplo:
|
// isso corretamente aqui. Um exemplo:
|
||||||
// require('guestbook/guestbook.lib.php');
|
// require('guestbook/guestbook.lib.php');
|
||||||
@@ -368,7 +368,8 @@ class Smarty_GuestBook extends Smarty {
|
|||||||
$this->assign('app_name','Guest Book');
|
$this->assign('app_name','Guest Book');
|
||||||
}
|
}
|
||||||
|
|
||||||
}</screen>
|
}
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -383,13 +384,14 @@ require('guestbook/setup.php');
|
|||||||
|
|
||||||
$smarty = new Smarty_GuestBook;
|
$smarty = new Smarty_GuestBook;
|
||||||
|
|
||||||
$smarty->assign('nome','Taniel');
|
$smarty->assign('nome','Thomas');
|
||||||
|
|
||||||
$smarty->display('index.tpl');</screen>
|
$smarty->display('index.tpl');
|
||||||
|
</screen>
|
||||||
</example>
|
</example>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Agora voc<6F> ver que <20> completamente simples criar uma inst<73>ncia do Smarty, apenas use
|
Agora voc<6F> pode ver que <20> extremamente simples criar uma inst<73>ncia do Smarty, apenas use
|
||||||
Smarty_GuestBook que automaticamente inicializa tudo para a nossa aplica<63><61>o.
|
Smarty_GuestBook que automaticamente inicializa tudo para a nossa aplica<63><61>o.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@@ -2,69 +2,61 @@
|
|||||||
<preface id="preface">
|
<preface id="preface">
|
||||||
<title>Pref<EFBFBD>cio</title>
|
<title>Pref<EFBFBD>cio</title>
|
||||||
<para>
|
<para>
|
||||||
Esta <20> uma das d<EFBFBD>vidas mais frenquentes na "mailing list" do PHP:
|
Esta <20> sem d<>vida uma das perguntas mais freq<EFBFBD>entes nas listas de discuss<73>es sobre PHP:
|
||||||
Como eu posso fazer PHP scripts independentes do layout ? Enquanto
|
como eu fa<EFBFBD>o meus scripts em PHP independentes do layout? O PHP <20> vendido como sendo uma
|
||||||
PHP est<73> contado como "HTML linguagem de blocos din<69>micos", ap<61>s estar
|
"linguagem de script embutida no HTML", ap<61>s escrever alguns projetos que misturam HTML e
|
||||||
escrevendo alguns projetos que misturavam PHP e HTML livremente algu<67>m veio com a
|
PHP naturalmente vem uma id<69>ia de que a separa<72><61>o da forma e conte<74>do <20> uma boa pr<70>tica [TM].
|
||||||
id<EFBFBD>ia que a separa<72><61>o do form e conte<74>do <20> uma boa pr<70>tica [TM]. Al<41>m disso,
|
Al<EFBFBD>m disso, em muitas empresas os pap<61>is de designer e programador s<>o separados.
|
||||||
em muitas empresas os pap<61>is de web designer e programador s<>o separados.
|
Conseq<EFBFBD>entemente, a busca por um sistema de templates continua.
|
||||||
Consequentemente, a procura por
|
|
||||||
uma solu<6C><75>o de template continua.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Na minha pr<70>pria empresa por exemplo, o desenvolvimento de uma aplica<63><61>o
|
Na nossa empresa por exemplo, o desenvolvimento de uma aplica<63><61>o <20> feito da seguinte
|
||||||
continua como segue: Ap<41>s a documenta<74><61>o necess<73>ria estar pronta, o web designer
|
maneira: Ap<41>s a documenta<74><61>o necess<73>ria estar pronta, o designer faz o esbo<62>o da interface
|
||||||
faz a maquete da interface e entrega isso ao programador. O programador implementa
|
e entrega ao programador. O programador implementa as regras de neg<65>cio no PHP e usa o
|
||||||
as regras de neg<65>cio no PHP e usa a maquete para criar o "esqueleto" do template.
|
esbo<EFBFBD>o da interface para criar o esqueleto dos templates. O projeto ent<6E>o est<73> nas m<>os
|
||||||
O projeto est<73> ent<6E>o nas m<>os da pessoa respons<6E>vel pelo layout HTML designer/web page
|
da pessoa respons<6E>vel pelo layout HTML da p<>gina que ent<6E>o transforma o esbo<62>o em um layout
|
||||||
que produz o template para sua gl<67>ria completa. O projeto deve ir e voltar
|
realmente funcional. O projeto talvez v<> e volte entre programa<6D><61>o/designer HTML v<>rias vezes.
|
||||||
entre programa<6D><61>o/HTML v<>rias vezes. Desta maneira, <20> importante para ter
|
Por<EFBFBD>m, <20> importante ter um bom suporte <20> templates porque os programadores n<>o querem ter que
|
||||||
um bom suporte de template porque programadores n<>o querem fazer nada
|
ficar mexendo com HTML e n<>o querem que os designers estraguem seus c<>digos PHP. Os designers
|
||||||
com HTML e n<>o querem HTML designers fazendo besteiras no c<>digo PHP.
|
precisam de ajuda para alterar os arquivos de configura<72><61>o, blocos din<69>micos e outros
|
||||||
Designers precisam de suporte para arquivos de configura<72><61>o, blocos din<69>micos e
|
problemas relacionados <20> interface usada, mas eles n<>o querem ocupar-se com as complexidades
|
||||||
outras interfaces usadas, mas eles n<>o querem ocupar-se com
|
da linguagem de programa<6D><61>o PHP.
|
||||||
as complexidades da linguagem
|
|
||||||
de programa<6D><61>o PHP.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Olhando para muitas solu<6C><75>es de template para PHP dispon<6F>veis atualmente,
|
Analisando muitas das solu<EFBFBD><EFBFBD>es de templates dispon<6F>veis para PHP hoje em dia, a
|
||||||
a maioria destes disponibiliza uma forma rudimentar de substitui<75><69>o de vari<72>veis
|
maioria somente disponibilizada uma forma rudimentar de substitui<75><69>o de vari<72>veis
|
||||||
dentro de templates e fazem um form limitado de blocos din<69>micos de funcionalidades.
|
dentro dos templates e trabalham de forma limitada com as funcionalidades dos blocos
|
||||||
Mas minhas necessidades pr<EFBFBD>prias requisitam um pouco mais do que isso.
|
din<EFBFBD>micos. Mas nossas necessidades necessitam de um pouco mais do que isso. N<EFBFBD>s n<>o
|
||||||
N<EFBFBD>s n<>o queremos programadores mexendo com layout HTML em tudo, mas isso foi quase inevit<69>vel.
|
quer<EFBFBD>amos que programadores mexendo com layout em HTML, mas isso <EFBFBD> praticamente inevit<69>vel.
|
||||||
Por exemplo, se um designer quiser cores no background alternando-se em blocos din<69>micos,
|
Por exemplo, se um designer quiser que as cores de fundo se alternam em blocos din<69>micos,
|
||||||
isso tem que ser feito pelo programador antecipadamente. N<>s tamb<6D>m
|
isso tem que ser feito pelo programador antecipadamente. N<>s tamb<6D>m precisamos que os designers
|
||||||
precisamos que designers estejam habilitados a usar seus pr<70>prios arquivos de configura<72><61>o,
|
possam usar seus pr<70>prios arquivos de configura<72><61>o, e usar as vari<72>veis definidas nestes arquivos
|
||||||
e colocar vari<72>veis deles dentro dos templates. A lista continua.
|
em seus templates. E a lista de necessidades continua...
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
N<>s iniciamos escrevendo por acaso um template engine por volta de 1999.
|
N<>s come<EFBFBD>amos <20> escrever as especifica<63><61>es para um sistema de templates por volta de 1999.
|
||||||
Ap<41>s o t<>rmino, n<>s come<6D>amos a trabalhar num template engine
|
Ap<41>s o t<>rmino das especifica<63><61>es, n<>s come<6D>amos a escrever um sistema de template em C
|
||||||
escrito em C que esperan<61>osamente foi aceito para ser incluso com PHP.
|
que esper<65>vamos ser aceito para rodar com o PHP. N<>o s<> esbarramos em muitas barreiras
|
||||||
N<EFBFBD>s n<>o somente encontramos algumas complicadas barreiras t<>cnicas, mas
|
t<EFBFBD>cnicas, como tamb<6D>m houve um enorme debate sobre o que exatamente um sistema de template
|
||||||
houve tamb<6D>m calorosos debates sobre exatamente o que um template engine devia
|
deveria ou n<>o fazer. <20> partir desta experi<72>ncia, n<>s decidimos que o sistema de template
|
||||||
e n<>o devia fazer. Desta experi<72>ncia, n<>s decidimos que o template
|
fosse escrito para ser uma classe do PHP, para que qualquer um usa-se da forma que lhe fosse
|
||||||
engine deveria ser escrito em PHP como uma classe, para qualquer um usar da mesma forma
|
mais conveniente, ent<6E>o n<>s escrevemos um sistema que fazia exatamente, foi a<> que surgiu o
|
||||||
como eles v<>em. Ent<6E>o n<>s escrevemos um engine que o
|
<productname>SmartTemplate</productname> (obs: esta classe nunca foi enviada ao p<>blico).
|
||||||
<productname>SmartTemplate</productname> nunca veio a existir (note: essa
|
Foi uma classe que fez quase tudo que n<>s quer<65>amos: substitui<75><69>o de vari<72>veis, suporte <20>
|
||||||
classe nunca foi enviada ao p<>blico). Ela foi uma classe que
|
inclus<EFBFBD>o de outros templates, integra<72><61>o com arquivos de configura<72><61>o, c<>digo PHP embutido,
|
||||||
fazia quase tudo que gostar<61>amos: substitui<75><69>o de vari<72>veis regular, suporte <20>
|
funcionalidades 'if' limitada e blocos din<69>micos muito mais robustos que poderiam ser aninhados
|
||||||
inclus<EFBFBD>o de outros templates, integra<72><61>o com arquivos de configura<72><61>o, c<>digo PHP
|
muitas vezes. Foi tudo feito usando express<73>es reguladores e c<>digos confusos, como dir<69>amos,
|
||||||
embutido, funcionalidade 'if' limitada e muito mais blocos din<69>micos robustos
|
impenetr<EFBFBD>vel. Era um sistema tamb<6D>m extremamente lento em grandes aplicativos por causa de todo
|
||||||
que poderia ser aninhados muitas vezes. Tudo isso com express<73>es regulares
|
o trabalho que era feito pelas express<73>es regulares e o 'parsing'(interpreta<74><61>o) em cada chamada
|
||||||
e o c<>digo produzido ser<65> melhor, como n<>s diremos,
|
ao aplicativo. O maior problema do ponto de vista de um programador foi o espantoso trabalho que
|
||||||
impenetr<EFBFBD>vel. Isso era tamb<6D>m notoriamente lento em grandes aplica<63><61>es para todos
|
era necess<73>rio para configurar e processar os blocos din<69>micos dos templates. Como far<61>amos
|
||||||
as interpreta<74><61>es e express<73>es regulares trabalhando em cada requisi<73><69>o.
|
esse sistema ser simples de usar?
|
||||||
O maior problema do ponto de vista de um programador foi toda a
|
|
||||||
necessidade de trabalhar no processamento de scripts PHP e processamento
|
|
||||||
de blocos din<69>micos de templates. Como n<>s fazemos isso facilmente?
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Ent<EFBFBD>o vem a vis<69>o do que ultimamente virou a Smarty. N<>s sabemos qu<71>o r<EFBFBD>pido
|
Foi ent<6E>o que veio a vis<69>o do que hoje <20> conhecido como Smarty. N<>s sabemos o qu<EFBFBD>o
|
||||||
<20> um c<>digo PHP sem o overhead da interpreta<74><61>o do template. N<>s tamb<6D>m sabemos
|
r<EFBFBD>pido <EFBFBD> um c<>digo PHP sem o sobrecarregamento de um sistema de templates. N<>s tamb<6D>m
|
||||||
qu<71>o meticuloso e autorit<EFBFBD>ria a linguagem PHP deve ser ao olhar de um designer,
|
sabemos qu<EFBFBD>o meticuloso e assustador <20> a linguagem PHP aos olhos de um designer atual,
|
||||||
e isso poderia ser mascarado com uma simples sintaxe de template.
|
e isso tudo poderia ser mascarado usando uma sintaxe simples nos templates. Ent<6E>o o que
|
||||||
Ent<EFBFBD>o o que acontece se n<>s combinarmos
|
acontece se n<>s combinarmos essas duas for<6F>as? Assim, nasceu o Smarty...
|
||||||
estas duas for<6F>as? Desta maneira, Smarty nasceu...
|
|
||||||
</para>
|
</para>
|
||||||
</preface>
|
</preface>
|
||||||
|
Reference in New Issue
Block a user