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