review of text and changed all examples to CDATA support

This commit is contained in:
thomasgm
2004-09-22 14:57:20 +00:00
parent 88c0c2a51e
commit 7ab14ec02a
12 changed files with 744 additions and 508 deletions

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -40,7 +40,7 @@
capture <20> usado para coletar toda a sa<73>da do template em uma vari<72>vel ao inv<6E>s
de mostra-lo. Qualquer conte<74>do entre {capture
name="foo"} e {/capture} coletado na vari<72>vel especificada no atributo name.
O conte<74>do capturado pode ser usado no template a apertir da vari<72>vel especial
O conte<74>do capturado pode ser usado no template a partir da vari<72>vel especial
$smarty.capture.foo aonde foo <20> o valor passado para o atributo name. Se voc<6F> n<>o
passar um atributo name, ent<6E>o ser<65> usado "default". Todos os comandos
{capture} devem ter o seu {/capture}. Voc<6F> pode aninhar(colocar um dentro de outro)
@@ -66,17 +66,20 @@
<example>
<title>capturando conte<74>do do template</title>
<programlisting>
{* we don't want to print a table row unless content is displayed *}
<![CDATA[
{* n<>s n<>o queremos mostrar uma linha de tabela <20> n<>o ser que haja conte<74>do para ela *}
{capture name=banner}
{include file="get_banner.tpl"}
{include file="pegar_banner.tpl"}
{/capture}
{if $smarty.capture.banner ne ""}
&lt;tr&gt;
&lt;td&gt;
<tr>
<td>
{$smarty.capture.banner}
&lt;/td&gt;
&lt;/tr&gt;
{/if}</programlisting>
</td>
</tr>
{/if}
]]>
</programlisting>
</example>
</para>
</sect1>

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -23,14 +23,14 @@
<entry>file</entry>
<entry>string</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome do arquivo de configura<72><61>o para incluir</entry>
</row>
<row>
<entry>section</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da se<73><65>o a carregar</entry>
</row>
<row>
@@ -56,7 +56,7 @@
<entry>
Quando ou n<>o as vari<72>veis s<>o visiveis para o template
superior(aquele que chamou este), o mesmo que scope=parent.
NOTA: este atributo esta obsoleto pelo atributo scope, mas
NOTA: este atributo esta obsoleto devido ao atributo scope, mas
ainda <20> suportado. Se scope for indicado, este valor <20> ignorado.
</entry>
</row>
@@ -65,31 +65,33 @@
</informaltable>
<para>
Esta fun<75><6E>o <20> usada para carregar as vari<72>veis de um arquivo de configura<72><61>o
dentro de um template. Veja <link linkend="config.files">Config Files</link>
para maiores
informa<6D><61>es.
dentro de um template. Veja <link linkend="config.files">Arquivos de Configura<72><61>o</link>
para mais informa<6D><61>es.
</para>
<example>
<title>Fun<EFBFBD><EFBFBD>o config_load</title>
<programlisting>
{config_load file="colors.conf"}
<![CDATA[
{config_load file="cores.conf"}
&lt;html&gt;
&lt;title&gt;{#pageTitle#}&lt;/title&gt;
&lt;body bgcolor="{#bodyBgColor#}"&gt;
&lt;table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"&gt;
&lt;tr bgcolor="{#rowBgColor#}"&gt;
&lt;td&gt;First&lt;/td&gt;
&lt;td&gt;Last&lt;/td&gt;
&lt;td&gt;Address&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</programlisting>
<html>
<title>{#tituloPagina#}</title>
<body bgcolor="{#cordeFundo}">
<table border="{#tamanhoBordaTabela}" bgcolor="{#cordeFundotabela#}">
<tr bgcolor="{#cordeFundoLinha#}">
<td>First</td>
<td>Last</td>
<td>Address</td>
</tr>
</table>
</body>
</html>
]]>
</programlisting>
</example>
<para>
Arquivos de configura<72><61>o podem conter se<73><65>es tamb<6D>m. Voce pode carregar
Arquivos de configura<72><61>o podem conter se<73><65>es tamb<6D>m. Voc<EFBFBD> pode carregar
vari<72>veis de uma se<73><65>o adicionando o atributo
<emphasis>section</emphasis>.
</para>
@@ -102,20 +104,23 @@
<example>
<title>Fun<EFBFBD><EFBFBD>o config_load com se<73><65>es</title>
<programlisting>
{config_load file="colors.conf" section="Customer"}
<![CDATA[
{config_load file="cores.conf" section="Consumidor"}
&lt;html&gt;
&lt;title&gt;{#pageTitle#}&lt;/title&gt;
&lt;body bgcolor="{#bodyBgColor#}"&gt;
&lt;table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"&gt;
&lt;tr bgcolor="{#rowBgColor#}"&gt;
&lt;td&gt;First&lt;/td&gt;
&lt;td&gt;Last&lt;/td&gt;
&lt;td&gt;Address&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</programlisting>
<html>
<title>{#tituloPagina#}</title>
<body bgcolor="{#cordeFundo}">
<table border="{#tamanhoBordaTabela}" bgcolor="{#cordeFundotabela#}">
<tr bgcolor="{#cordeFundoLinha#}">
<td>First</td>
<td>Last</td>
<td>Address</td>
</tr>
</table>
</body>
</html>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -23,14 +23,14 @@
<entry>from</entry>
<entry>string</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da matriz que voc<6F> estar<61> pegando os elementos</entry>
</row>
<row>
<entry>item</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da vari<72>vel
que <20> o elemento atual</entry>
</row>
@@ -38,14 +38,14 @@
<entry>key</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da vari<72>vel que <20> a chave atual</entry>
</row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome do loop foreach para acessar as
propriedades foreach</entry>
</row>
@@ -73,49 +73,58 @@
<example>
<title>foreach</title>
<programlisting>
<![CDATA[
{* este exemplo ir<69> mostrar todos os valores da matriz $custid *}
{foreach from=$custid item=curr_id}
id: {$curr_id}&lt;br&gt;
id: {$curr_id}<br>
{/foreach}
MOSTRA:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
id: 1000<br>
id: 1001<br>
id: 1002<br>
]]>
</programlisting>
</example>
<example>
<title>foreach key</title>
<programlisting>
<![CDATA[
{* A key cont<6E>m a chave para cada valor do loop
A defini<6E><69>o <EFBFBD> alo assim:
A defini<6E><69>o se parece com isso:
$smarty->assign("contacts", array(array("phone" =&gt; "1", "fax" =&gt; "2", "cell" =&gt; "3"),
array("phone" =&gt; "555-4444", "fax" =&gt; "555-3333", "cell" =&gt; "760-1234")));
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
*}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}&lt;br&gt;
{$key}: {$item}<br>
{/foreach}
{/foreach}
MOSTRA:
phone: 1&lt;br&gt;
fax: 2&lt;br&gt;
cell: 3&lt;br&gt;
phone: 555-4444&lt;br&gt;
fax: 555-3333&lt;br&gt;
cell: 760-1234&lt;br&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
phone: 1<br>
fax: 2<br>
cell: 3<br>
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br>
]]>
</programlisting>
</example>
<para>
Loop foreach tamb<6D>m tem as suas pr<70>prias vari<72>veis para manipilar a as propriedades
Loop foreach tamb<6D>m tem as suas pr<70>prias vari<72>veis para manipilar as propriedades
foreach. Estas s<>o indicadas assim: {$smarty.foreach.foreachname.varname} com
foreachname sendo o nome especificado no atributo
<emphasis>name</emphasis> do foreach.

View File

@@ -3,20 +3,134 @@
<sect1 id="language.function.if">
<title>if,elseif,else</title>
<para>
Comandos if no Smarty tem muito da mesma flexibilidade do php,
com algumas adi<EFBFBD><EFBFBD>es para a ferramenta de template.
Comandos {if} no Smarty tem muito da mesma flexibilidade do php,
com algumas caracter<EFBFBD>sticas <20> mais para o sistema de template.
Todo <emphasis>if</emphasis> deve ter o seu
<emphasis>/if</emphasis>. <emphasis>else</emphasis> e
<emphasis>elseif</emphasis> tamb<6D>m s<>o permitidos. "eq", "ne","neq",
"gt", "lt", "lte", "le", "gte" "ge","is even","is odd", "is not
even","is not odd","not","mod","div by","even by","odd
by","==","!=","&gt;", "&lt;","&lt;=","&gt;=" s<>o todos os qualificadores
de condi<64><69>o v<>lidos, e ddevem estar separados
dos elementos em roda por espa<70>o.
<emphasis>elseif</emphasis> tamb<6D>m s<>o permitidos. Todos os
condicionais do PHP s<>o reconhecidos, tais como ||, or, &&, and, etc.
</para>
<para>
A seguir est<73> uma lsita dos qualificadores, que devem estar separados dos elementos
por espa<70>o. Note que itens listado entre [conchetes] s<>o opcionais. Os equivalentes
em PHP s<>o mostrados quando aplic<69>veis.
</para>
<informaltable frame="all">
<tgroup cols="4">
<colspec colname="qualifier" align="center" />
<colspec colname="alternates" align="center" />
<colspec colname="example" />
<colspec colname="meaning" />
<colspec colname="php" />
<thead>
<row>
<entry>Qualificador</entry>
<entry>Alternativas</entry>
<entry>Exemplo de sintaxe</entry>
<entry>Significado</entry>
<entry>Equivalente no PHP</entry>
</row>
</thead>
<tbody>
<row>
<entry>==</entry>
<entry>eq</entry>
<entry>$a eq $b</entry>
<entry>iguais</entry>
<entry>==</entry>
</row>
<row>
<entry>!=</entry>
<entry>ne, neq</entry>
<entry>$a neq $b</entry>
<entry>n<EFBFBD>o iguais</entry>
<entry>!=</entry>
</row>
<row>
<entry>&gt;</entry>
<entry>gt</entry>
<entry>$a gt $b</entry>
<entry>maior que</entry>
<entry>&gt;</entry>
</row>
<row>
<entry>&lt;</entry>
<entry>lt</entry>
<entry>$a lt $b</entry>
<entry>menor que</entry>
<entry>&lt;</entry>
</row>
<row>
<entry>&gt;=</entry>
<entry>gte, ge</entry>
<entry>$a ge $b</entry>
<entry>maior ou igual <20></entry>
<entry>&gt;=</entry>
</row>
<row>
<entry>&lt;=</entry>
<entry>lte, le</entry>
<entry>$a le $b</entry>
<entry>menor ou igual <20></entry>
<entry>&lt;=</entry>
</row>
<row>
<entry>!</entry>
<entry>not</entry>
<entry>not $a</entry>
<entry>nega<EFBFBD><EFBFBD>o (unary)</entry>
<entry>!</entry>
</row>
<row>
<entry>%</entry>
<entry>mod</entry>
<entry>$a mod $b</entry>
<entry>m<EFBFBD>dulo</entry>
<entry>%</entry>
</row>
<row>
<entry>is [not] div by</entry>
<entry></entry>
<entry>$a is not div by 4</entry>
<entry>divis<EFBFBD>vel por</entry>
<entry>$a % $b == 0</entry>
</row>
<row>
<entry>is [not] even</entry>
<entry></entry>
<entry>$a is not even</entry>
<entry>[not] an even number (unary)</entry>
<entry>$a % 2 == 0</entry>
</row>
<row>
<entry>is [not] even by</entry>
<entry></entry>
<entry>$a is not even by $b</entry>
<entry>grouping level [not] even</entry>
<entry>($a / $b) % 2 == 0</entry>
</row>
<row>
<entry>is [not] odd</entry>
<entry></entry>
<entry>$a is not odd</entry>
<entry>[not] an odd number (unary)</entry>
<entry>$a % 2 != 0</entry>
</row>
<row>
<entry>is [not] odd by</entry>
<entry></entry>
<entry>$a is not odd by $b</entry>
<entry>[not] an odd grouping</entry>
<entry>($a / $b) % 2 != 0</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<example>
<title>comandos if</title>
<programlisting>
<![CDATA[
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma"}
@@ -43,7 +157,7 @@
{* parenteses s<>o permitidos *}
{if ( $amount &lt; 0 or $amount &gt; 1000 ) and $volume >= #minVolAmt#}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
...
{/if}
@@ -63,7 +177,7 @@
...
{/if}
{* test if var is divisible by 4 *}
{* verifica se a vari<72>vel <20> divis<69>vel por 4 *}
{if $var is div by 4}
...
{/if}
@@ -77,7 +191,9 @@
{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
{if $var is even by 3}
...
{/if}</programlisting>
{/if}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -45,18 +45,29 @@
</tbody>
</tgroup>
</informaltable>
<note>
<title>Nota T<>cnica</title>
<para>
include_php est<73> quase sendo retirado do Smarty, voc<6F> pode obter a mesma funcionalidade
usando uma fun<75><6E>o customizada em um template. A <20>nica raz<61>o para usar o include_php <20>
se voc<6F> realmente precisar deixar fun<75><6E>o php fora do diret<65>rio de plugin ou c<>digo da
sua aplica<63><61>o. Veja a se<73><65>o
<link linkend="tips.componentized.templates">templates componentizados</link>
para mais detalhes.
</para>
</note>
<para>
Tags include_php s<>o usadas para incluir um script php no seu template.
Se a seguran<61>a estiver ativada, ent<6E>o o script php deve estar localizado
no caminho $trusted_dir. A tag include_php deve ter o atributo
"file", o qual cont<6E>m o caminho para o arquivo php a ser inclu<6C>do,
ou relativo a $trusted_dir, ou um caminho absoluto.
no diret<EFBFBD>rio especificado na vari<72>vel $trusted_dir. A tag include_php
deve ter o atributo "file", o qual cont<6E>m o caminho para o arquivo php
inclu<EFBFBD>do, pode ser um camiho tanto absoluto ou relativo a $trusted_dir.
</para>
<para>
include_php <20> um bom meio de manipular templates com componentes,
e mante o c<>digo PHP separado dos arquivos de template. Vamos dizer
include_php <20> um bom meio de manipular templates componentizados,
e manter o c<>digo PHP separado dos arquivos de template. Digamos
que voc<6F> tenha um template que mostre a navega<67><61>o do seu site, o qual
<09> prenchido automaticamente a partir de um banco de dados. Voc<6F> pode
<09> preenchido automaticamente a partir de um banco de dados. Voc<6F> pode
manter a sua l<>gica PHP que obt<62>m os dados em um diret<65>rio separado,
e inclui-la no topo do template. Agora voc<6F> pode incluir este template
em qualquer lugar sem se preocupar se a informa<6D><61>o do banco de dados foi
@@ -82,29 +93,32 @@
<example>
<title>Fun<EFBFBD><EFBFBD>o include_php</title>
<programlisting>
<![CDATA[
load_nav.php
-------------
&lt;?php
<?php
// carrega vari<72>veis de um banco de dados mysql e define ela para o template
// carrega vari<72>veis de um banco de dados mysql e define elas para o template
require_once("MySQL.class.php");
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
$this->assign('sections',$sql->record);
?&gt;
?>
index.tpl
---------
{* caminho absoluto ou relativo a $trusted_dir *}
{include_php file="/path/to/load_nav.php"}
{include_php file="/caminho/para/load_nav.php"}
{foreach item="curr_section" from=$sections}
&lt;a href="{$curr_section.url}"&gt;{$curr_section.name}&lt;/a&gt;&lt;br&gt;
{/foreach}</programlisting>
<a href="{$curr_section.url}">{$curr_section.name}</a><br>
{/foreach}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -23,14 +23,14 @@
<entry>file</entry>
<entry>string</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome do arquivo de template a incluir</entry>
</row>
<row>
<entry>assign</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome de uma vari<72>vel que ir<69>
conter toda a sa<73>da do template</entry>
</row>
@@ -38,32 +38,35 @@
<entry>[var ...]</entry>
<entry>[var type]</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>Vari<EFBFBD>vel para passar localmente para o template</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Tags include s<>o usados para incluir outros templates no template
atual. Quaisquer vari<72>veis dispon<6F>veis no template atual tamb<6D>m esta
dispon<6F>vel dentro do template incluido. A tag include deve ter o atributo
Tags include s<>o usadas para incluir outros templates no template
atual. Quaisquer vari<72>veis dispon<6F>veis no template atual tamb<6D>m estar<EFBFBD>o
dispon<6F>veis junto com template inclu<EFBFBD>do. A tag include deve ter o atributo
"file", o qual cont<6E>m o caminho do arquivo a incluir.
</para>
<para>
Voc<6F> pode opcionalmente passar o atributo <emphasis>assign</emphasis>,
o qual ir<69> especificar o nome de uma vari<72>vel de template para a qual
conter<65> toda a sa<EFBFBD>da de <emphasis>include</emphasis> ao
inv<6E>s de mostra-la.
conter<65> todo o conte<EFBFBD>do do <emphasis>include</emphasis> ao
inv<6E>s de mostr<EFBFBD>-lo.
</para>
<example>
<title>function include</title>
<programlisting>
{include file="header.tpl"}
<![CDATA[
{include file="cabecalho.tpl"}
{* O corpo do template vai aqui *}
{* O conte<EFBFBD>do do template vem aqui *}
{include file="footer.tpl"}</programlisting>
{include file="rodape.tpl"}
]]>
</programlisting>
</example>
<para>
Voc<6F> pode tamb<6D>m passar vari<72>veis para o template inclu<6C>do como atributos.
@@ -75,31 +78,37 @@
<example>
<title>Fun<EFBFBD><EFBFBD>o include passando vari<72>veis</title>
<programlisting>
{include file="header.tpl" title="Main Menu" table_bgcolor="#c0c0c0"}
<![CDATA[
{include file="cabecalho.tpl" title="Menu Principal" table_bgcolor="#c0c0c0"}
{* O corpo de template vai aqui *}
{* O conte<EFBFBD>do de template vem aqui *}
{include file="footer.tpl" logo="http://my.domain.com/logo.gif"}</programlisting>
{include file="rodape.tpl" logo="http://meu.dominio.com/logo.gif"}
]]>
</programlisting>
</example>
<para>
Use a sintaxe para <link
Use a sintaxe de <link
linkend="template.resources">template resources</link> para
incluir arquivos fora do diret<65>rio $template_dir.
</para>
<example>
<title>Exemplos de recursos para a fun<75><6E>o include</title>
<programlisting>
<![CDATA[
{* caminho absoluto *}
{include file="/usr/local/include/templates/header.tpl"}
{include file="/usr/local/include/templates/cabecalho.tpl"}
{* caminho absoluto (mesma coisa) *}
{include file="file:/usr/local/include/templates/header.tpl"}
{* caminho absoluto (idem) *}
{include file="file:/usr/local/include/templates/cabecalho.tpl"}
{* caminho absoluto do windows (DEVE usar o prefixo "file:") *}
{include file="file:C:/www/pub/templates/header.tpl"}
{include file="file:C:/www/pub/templates/cabecalho.tpl"}
{* incluir a partir do recurso de template chamado "db" *}
{include file="db:header.tpl"}</programlisting>
{include file="db:header.tpl"}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do Atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -23,14 +23,14 @@
<entry>name</entry>
<entry>string</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da fun<75><6E>o insert (insert_name)</entry>
</row>
<row>
<entry>assign</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da vari<72>vel que
ir<69> receber a sa<73>da</entry>
</row>
@@ -38,7 +38,7 @@
<entry>script</entry>
<entry>string</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome de um script php que ser<65> incluido
antes que a fun<75><6E>o insert seja chamada</entry>
</row>
@@ -46,7 +46,7 @@
<entry>[var ...]</entry>
<entry>[var type]</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>Vari<EFBFBD>vel para passar para a fun<75><6E>o insert</entry>
</row>
</tbody>
@@ -59,18 +59,18 @@
executada a cada invoca<63><61>o do template.
</para>
<para>
Vamos dizer que voc<6F> tenha um template com um banner em cima. O
banner pode conter qualquer mistura de html, imagens, flash, etc.
Assin n<>s n<>o podemos usar uma liga<EFBFBD><EFBFBD>o estatica aqui, e n<>s n<>o
queremos que este conte<74>do fique no cache com a p<>gina. Aqui vem a tag
Digamos que voc<6F> tenha um template com um banner no topo da p<>gina. O
banner pode conter uma mistura de html, imagens, flash, etc.
Assim n<>s n<>o podemos usar um link estatico aqui, e n<>s n<>o
queremos que este conte<74>do fique no cache junto com a p<>gina. E a<> que entra a tag
insert: o template conhece os valores #banner_location_id# e
#site_id# (obtidos de um arquivo de configura<72><61>o), e precisa chamar
uma fun<75><6E>o para obter o conte<74>do do banner.
</para>
<example>
<title>function insert</title>
<title>fun<EFBFBD><EFBFBD>o insert</title>
<programlisting>
{* example of fetching a banner *}
{* exemplo de como obter um banner *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}</programlisting>
</example>
<para>
@@ -82,28 +82,34 @@
aplica<63><61>o devem ser precedidas por "insert_" para prevenir poss<73>veis
problemas com nomes de fun<75><6E>es repetidos. Sua fun<75><6E>o insert_getBanner()
deve fazer alguma coisa com os valores passados e retornar os resultados.
Estes resultados s<>o mostrados no template em lugar da tag insert.
Estes resultados s<>o mostrados no template no lugar da tag insert.
Neste exemplo, o Smarty ir<69> chamar esta fun<75><6E>o:
insert_getBanner(array("lid" => "12345","sid" => "67890"));
e mostrar o resultado retornado no lugar da tag insert.
</para>
<para>
Se voc<6F> der o atributo "assign", a sa<73>da da tag insert ser<65>
Se voc<6F> passar o atributo "assign", a sa<73>da da tag insert ser<65>
dada para esta vari<72>vel ao inv<6E>s de ser mostrada
no template. Nota: definir a sa<73>da para uma vari<72>vel n<>o <20>
no template.
</para>
<note>
<title>Nota</title>
<para>
definir a sa<73>da para uma vari<72>vel n<>o <20>
<20>til quando o cache esta ativo.
</para>
</note>
<para>
Se voc<6F> der o atributo "script", este script php ser<65> incluido
Se voc<6F> passar o atributo "script", este script php ser<65> incluido
(apenas uma vez) antes da execu<63><75>o da fun<75><6E>o insert. Este
<20> o caso onde a fun<75><6E>o insert n<>o existe ainda, e um script
php deve ser inclu<6C>do antes para faze-la funcionar. O caminho pode
ser absoluto ou relativo a $trusted_dir. Quando a seguran<61>a esta
ativada, o script deve estar em $trusted_dir.
ser absoluto ou relativo <EFBFBD> vari<72>vel $trusted_dir. Quando a seguran<61>a esta
ativada, o script deve estar no local definido na vari<72>vel $trusted_dir.
</para>
<para>
O objeto Smarty <20> passado como segundo argumento. Desde modo
poc<EFBFBD> pode refenciar o objeto Smarty
O objeto Smarty <20> passado como segundo argumento. Deste modo
voc<EFBFBD> pode refenciar o objeto Smarty
de dentro da fun<75><6E>o.
</para>
<note>
@@ -114,7 +120,7 @@
ativado, tags insert n<>o estar<61>o no cache. Ela ser<65> executada
dinamicamente a cada vez que a p<>gina seja criada, mesmo com
p<>ginas em cache. Isto funciona bem para coisas como banners, pesquisa,
clima, resultados de pesquisa, areas de opni<6E>o do usu<73>rio, etc.
previs<EFBFBD>es do tempo, resultados de pesquisa, <EFBFBD>reas de opni<6E>o do usu<73>rio, etc.
</para>
</note>
</sect1>

View File

@@ -3,21 +3,25 @@
<sect1 id="language.function.ldelim">
<title>ldelim,rdelim</title>
<para>
ldelim e rdelim s<>o usados para mostrar os delimitadores literalmente,
no nosso caso "{" ou "}". A ferramente de template sempre
tenta interpretar os delimitadores, ent<6E>o este <20> o meio de contornar isso.
ldelim e rdelim s<>o usados para mostrar os delimitadores de templates literalmente,
no nosso caso "{" ou "}". Ou voc<6F> pode usar {literal}{/literal} para
interpretar blocos de texto literalmente. Veja tamb<6D>m {$smarty.ldelim} e {$smarty.rdelim}
</para>
<example>
<title>ldelim, rdelim</title>
<programlisting>
{* isto ir<69> mostrar os delimitadore no template *}
<![CDATA[
{* isto far<61> com que os delimitadores de template sejam tratados literalmente *}
{ldelim}funcname{rdelim} is how functions look in Smarty!
MOSTRA:
{funcname} is how functions look in Smarty!</programlisting>
{ldelim}funcname{rdelim} <EFBFBD> como a fun<75><6E>o aparecer no Smarty!
]]>
</programlisting>
<para>O exemplo acima exibir<69>:</para>
<programlisting>
<![CDATA[
{funcname} <20> como a fun<75><6E>o aparecer no Smarty
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -3,20 +3,21 @@
<sect1 id="language.function.literal">
<title>literal</title>
<para>
Tags literal permitem que um bloco de dados seja tomado literalmente,
n<>o sendo interpretado pelo smarty. Isto <20> <EFBFBD>til
para coisas como se<73><65>es javascript, aonde podem haver
chaves("{}") e coisas assim que possam confundir
o interpretador do template.
Qualquer coisa dentro das {literal}{/literal} n<>o ser<65> interpretado, mas mostrado como estiver.
Tags literal permitem que um bloco de dados seja tratado literalmente, ou seja,
n<>o <EFBFBD> interpretado pelo Smarty. Isto <20> tipicamente usado com blocos de c<>digo
javascript ou folhas de estilo (stylesheet), que <20>s vezes cont<6E>m chaves
que podem entrar em conflito com o delimitador de sintaxe. Qualquer coisa entre
{literal}{/literal} n<>o <20> interpretado, mas <20> mostrado. Se voc<6F> precisa que
tags de templates sejam embutidas em um bloco literal, use {ldelim}{rdelim}.
</para>
<example>
<title>Tags literal</title>
<programlisting>
<![CDATA[
{literal}
&lt;script language=javascript&gt;
<script language=javascript>
&lt;!--
<!--
function isblank(field) {
if (field.value == '')
{ return false; }
@@ -26,10 +27,12 @@
return true;
}
}
// --&gt;
// -->
&lt;/script&gt;
{/literal}</programlisting>
</script>
{/literal}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -3,19 +3,22 @@
<sect1 id="language.function.php">
<title>php</title>
<para>
Tags php permitem que voc<EFBFBD> adicione c<EFBFBD>digo php diretamente no template.
N<EFBFBD>o ser<65> escapado, n<>o importando a defini<6E><69>o de <link
linkend="variable.php.handling">$php_handling</link>. Isto
<EFBFBD> apenas para usu<73>rios avan<61>ados e normalmente n<>o <20> necess<73>rio.
Tags php permitem que c<>digos php sejam embutidos diretamente nos templates.
Eles n<EFBFBD>o ser<65>o interpretados, n<>o importando a defini<6E><69>o de
<link linkend="variable.php.handling">$php_handling</link>. Esta op<6F><70>o <20>
somente para usu<73>rios avan<61>ados e normalmente n<>o <20> necess<73>ria.
</para>
<example>
<title>Tags php</title>
<programlisting>
<![CDATA[
{php}
// incluindo um script php
// diretamente no template.
include("/path/to/display_weather.php");
{/php}</programlisting>
include("/caminho/para/condicoes_do_tempo.php");
{/php}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -13,7 +13,7 @@
<row>
<entry>Nome do atributo</entry>
<entry>Tipo</entry>
<entry>Requerido</entry>
<entry>Obrigat<EFBFBD>rio</entry>
<entry>Padr<EFBFBD>o</entry>
<entry>Descri<EFBFBD><EFBFBD>o</entry>
</row>
@@ -23,14 +23,14 @@
<entry>name</entry>
<entry>string</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da se<73><65>o</entry>
</row>
<row>
<entry>loop</entry>
<entry>[$variable_name]</entry>
<entry>Sim</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><emphasis>n/d</emphasis></entry>
<entry>O nome da vari<72>vel para determinar o
n<>mero de intera<72><61>es</entry>
</row>
@@ -41,10 +41,10 @@
<entry><emphasis>0</emphasis></entry> <entry>A posi<73><69>o
do <20>ndice que a se<73><65>o vai come<6D>ar. Se o valor
<09> negativo, a posi<73><69>o de inicio <20> calculada a partir
do final da matriz. For exemplo, se houverem
sete valores na matriz e start for -2, o
do final da matriz. Por exemplo, se houverem
sete valores na matriz e 'start' for -2, o
<09>ndice inicial <20> 5. Valores inv<6E>lidos (valores fora do
tamanho da matriz) s<>o automaticamente truncados
tamanho da matriz) s<>o automaticamente corrigidos
para o valor v<>lido mais pr<70>ximo.</entry>
</row>
<row>
@@ -52,8 +52,8 @@
<entry>integer</entry>
<entry>N<EFBFBD>o</entry>
<entry><emphasis>1</emphasis></entry>
<entry>O valor do passo que ser<65> usado para o loop
na matriz. Por exemplo, step=2 ir<69> realizar o loop com
<entry>O valor do passo que ser<65> usado para percorrer
a matriz. Por exemplo, step=2 ir<69> percorrer
os <20>ndices 0,2,4, etc. Se step for negativo, ele ir<69> caminhar
pela matriz de tr<74>s para frente.</entry>
</row>
@@ -76,149 +76,170 @@
</tgroup>
</informaltable>
<para>
sections de template s<>o usada para realizar um loop por uma matriz. Todas as tags
<emphasis>section</emphasis> devem ter as suas
<emphasis>/section</emphasis>. Par<61>metros requeridos s<>o
<emphasis>name</emphasis> e <emphasis>loop</emphasis>. O nome
de section pode ser o que voc<6F> quiser, feito de letras,
n<>meros e sublinhados. Sections podem ser aninhadas, e os nomes das section
aninhadas devem ser diferentes um dos outros. A vari<72>vel do loop
(normalmente uma matriz de valores) determina o n<>mero de vezes do
loop da section. Quando estiver mostrando uma vari<72>vel dentro de uma section,
o nome da section deve estar ao lado da vari<72>vel dentro de conchetes
[]. <emphasis>sectionelse</emphasis> <20>
executado quando n<>o houverem valores para a vari<72>vel de loop.
Os 'sections' de template s<>o usados para percorrer os dados de uma matriz.
Todas as tags <emphasis>section</emphasis> devem ser finalizadas com <emphasis>/section</emphasis>.
Os par<61>metros obrigat<61>rios s<>o <emphasis>name</emphasis> e <emphasis>loop</emphasis>.
O nome da 'section' pode ser o que voc<6F> quiser, contendo letras, n<>meros e sublinhados.
As 'sections' podem ser aninhadas, e os nomes das sections devem ser <20>nicos. A vari<72>vel
'loop' (normalmente uma matriz de valores) determina o n<>mero de vezes que a section
ser<65> percorrida. Quando estiver exibindo uma vari<72>vel dentro de uma section,
o nome da section deve estar ao lado da vari<72>vel dentro de conchetes [].
<emphasis>sectionelse</emphasis> <20> executado quando n<>o houver valores na
vari<72>vel 'loop'.
</para>
<example>
<title>section</title>
<programlisting>
{* este exemplo ir<69> mostrar todos os valores de $custid array *}
{section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
<![CDATA[
{* este exemplo ir<69> mostrar todos os valores da matriz $custid *}
{section name=consumidor loop=$custid}
id: {$custid[consumidor]}<br>
{/section}
MOSTRA:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
id: 1000<br>
id: 1001<br>
id: 1002<br>
]]>
</programlisting>
</example>
<example>
<title>loop de vari<72>vel section</title>
<programlisting>
{* a vari<72>vel de loo<6F>p determina o n<>mero de vezes do loop.
Voc<6F> pode acessar qualquer vari<72>vel do template dentro da section.
Este exemplo assume que $custid, $name e $address s<>o todas
<![CDATA[
{* a vari<72>vel 'loop' somente determina o n<>mero de vezes que ir<69> percorrer a matriz.
Voc<EFBFBD> pode acessar qualquer vari<72>vel do template dentro da section.
Este exemplo assume que $custid, $nome e $endereco s<>o todas
matrizes contendo o mesmo n<>mero de valores *}
{section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
name: {$name[customer]}&lt;br&gt;
address: {$address[customer]}&lt;br&gt;
&lt;p&gt;
{section name=consumidor loop=$custid}
id: {$custid[consumidor]}<br>
nome: {$nome[consumidor]}<br>
endere<72>o: {$endereco[customer]}<br>
<p>
{/section}
MOSTRA:
id: 1000&lt;br&gt;
name: John Smith&lt;br&gt;
address: 253 N 45th&lt;br&gt;
&lt;p&gt;
id: 1001&lt;br&gt;
name: Jack Jones&lt;br&gt;
address: 417 Mulberry ln&lt;br&gt;
&lt;p&gt;
id: 1002&lt;br&gt;
name: Jane Munson&lt;br&gt;
address: 5605 apple st&lt;br&gt;
&lt;p&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
id: 1000<br>
nome: John Smith<br>
endere<EFBFBD>o: 253 N 45th<br>
<p>
id: 1001<br>
nome: Jack Jones<br>
endere<EFBFBD>o: 417 Mulberry ln<br>
<p>
id: 1002<br>
nome: Jane Munson<br>
endere<EFBFBD>o: 5605 apple st<br>
<p>
]]>
</programlisting>
</example>
<example>
<title>Nomes de section</title>
<programlisting>
{* o nome de section pode ser o que voc<6F> quiser,
e <20> usado para referenciar os dados dentro da section *}
{section name=mydata loop=$custid}
id: {$custid[mydata]}&lt;br&gt;
name: {$name[mydata]}&lt;br&gt;
address: {$address[mydata]}&lt;br&gt;
&lt;p&gt;
{/section}</programlisting>
<![CDATA[
{* o nome da se<73><65>o pode ser o que voc<6F> qusier,
e <20> usado para referenciar os dados contido na se<73><65>o *}
{section name=meusdados loop=$custid}
id: {$custid[meusdados]}<br>
nome: {$nome[meusdados]}<br>
endere<72>o: {$endereco[meusdados]}<br>
<p>
{/section}
]]>
</programlisting>
</example>
<example>
<title>sections aninhadas</title>
<programlisting>
{* sections podem ser aninhadas t<>o profundamente quanto voc<6F> quiser. Com sections aninhadas,
voc<6F> pode acessar estruturas de dados complexas, como matriz multi-dimensionais.
Neste exemplo, $contact_type[customer] <20> uma matriz de
tipos de contato para o custumer atual. *}
<![CDATA[
{* sections podem ser aninhadas at<EFBFBD> o n<>vel que voc<6F> quiser. Com sections aninhadas,
voc<EFBFBD> pode acessar complexas estruturas de dados, tais como matrizes multi-dimensionais.
Neste exemplo, $contact_type[customer] <20> uma matriz contendo os tipos de contatos
do consumidor atualmente selecionado. *}
{section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
name: {$name[customer]}&lt;br&gt;
address: {$address[customer]}&lt;br&gt;
id: {$custid[customer]}<br>
name: {$name[customer]}<br>
address: {$address[customer]}<br>
{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}&lt;br&gt;
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br>
{/section}
&lt;p&gt;
<p>
{/section}
MOSTRA:
id: 1000&lt;br&gt;
name: John Smith&lt;br&gt;
address: 253 N 45th&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: john@mydomain.com&lt;br&gt;
&lt;p&gt;
id: 1001&lt;br&gt;
name: Jack Jones&lt;br&gt;
address: 417 Mulberry ln&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jack@mydomain.com&lt;br&gt;
&lt;p&gt;
id: 1002&lt;br&gt;
name: Jane Munson&lt;br&gt;
address: 5605 apple st&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jane@mydomain.com&lt;br&gt;
&lt;p&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
id: 1000<br>
name: John Smith<br>
address: 253 N 45th<br>
home phone: 555-555-5555<br>
cell phone: 555-555-5555<br>
e-mail: john@mydomain.com<br>
<p>
id: 1001<br>
name: Jack Jones<br>
address: 417 Mulberry ln<br>
home phone: 555-555-5555<br>
cell phone: 555-555-5555<br>
e-mail: jack@mydomain.com<br>
<p>
id: 1002<br>
name: Jane Munson<br>
address: 5605 apple st<br>
home phone: 555-555-5555<br>
cell phone: 555-555-5555<br>
e-mail: jane@mydomain.com<br>
<p>
]]>
</programlisting>
</example>
<example>
<title>sections e matrizes associativas</title>
<programlisting>
{* Este <20> um exemplo de mostrar os dados de matriz associativa
dentro da section *}
{section name=customer loop=$contacts}
name: {$contacts[customer].name}&lt;br&gt;
home: {$contacts[customer].home}&lt;br&gt;
cell: {$contacts[customer].cell}&lt;br&gt;
e-mail: {$contacts[customer].email}&lt;p&gt;
<![CDATA[
{* Este <20> um exemplo de exibi<62><69>o de uma matriz associativa
dentro de uma se<73><65>o *}
{section name=consumidor loop=$contatos}
nome: {$contatos[consumidor].nome}<br>
telefone: {$contatos[consumidor].telefone}<br>
celular: {$contatos[consumidor].celular}<br>
e-mail: {$contatos[consumidor].email}<p>
{/section}
MOSTRA:
name: John Smith&lt;br&gt;
home: 555-555-5555&lt;br&gt;
cell: 555-555-5555&lt;br&gt;
e-mail: john@mydomain.com&lt;p&gt;
name: Jack Jones&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jack@mydomain.com&lt;p&gt;
name: Jane Munson&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
name: John Smith<br>
home: 555-555-5555<br>
cell: 555-555-5555<br>
e-mail: john@mydomain.com<p>
name: Jack Jones<br>
home phone: 555-555-5555<br>
cell phone: 555-555-5555<br>
e-mail: jack@mydomain.com<p>
name: Jane Munson<br>
home phone: 555-555-5555<br>
cell phone: 555-555-5555<br>
e-mail: jane@mydomain.com<p>
]]>
</programlisting>
</example>
@@ -226,52 +247,61 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<example>
<title>sectionelse</title>
<programlisting>
{* sectionelse ir<69> executar se n<>o houverem mais valores $custid *}
{section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
<![CDATA[
{* sectionelse ir<69> executar se n<>o houverem mais valores em $custid *}
{section name=consumidor loop=$custid}
id: {$custid[consumidor]}<br>
{sectionelse}
there are no values in $custid.
{/section}</programlisting>
n<>o h<> valores em $custid.
{/section}
]]>
</programlisting>
</example>
<para>
Sections tamb<6D>m tem as suas pr<70>prias vari<72>veis que manipulam as propriedaes section.
Estas s<>o indicadas assim: {$smarty.section.sectionname.varname}
Sections tamb<6D>m tem as suas pr<70>prias vari<72>veis que manipulam as propriedades da section.
Estas s<>o indicadas assim: {$smarty.section.nomesection.nomevariavel}
</para>
<note>
<title>Nota</title>
<para>
NOTA: a partir do Smarty 1.5.0, a sintaxe para as vari<72>veis de propriedades de section
mudou de {%sectionname.varname%} para
{$smarty.section.sectionname.varname}. A sintaxe antiga ainda <20> suportada,
mas voc<6F> ir<69> ver referencias apenas a nova sintaxe nos
exemplos do manual.
A partir do Smarty 1.5.0, a sintaxe para as vari<72>veis de propriedades da section
mudou de {%nomesecao.nomevariavel%} para {$smarty.section.nomesection.nomevariavel}. A
sintaxe antiga ainda <20> suportada, mas voc<6F> ver<65> refer<65>ncias somente <20> nova sintaxe no
manual.
</para>
</note>
<sect2 id="section.property.index">
<title>index</title>
<para>
index <20> usado para mostrar o <20>ndice atual do loop, come<6D>ando em zero
(ou pelo atributo start se dado), e incrementando por um (ou pelo
atributo step se dado).
(ou pelo atributo start caso tenha sido definido), e incrementado por um
(ou pelo atributo step caso tenha sido definido).
</para>
<note>
<title>Nota T<>cnica</title>
<title>Nota T<>cnica:</title>
<para>
Se as propriedades section n<>o for modificada,
ent<EFBFBD>o isto funciona igual a propriedade iteration da section,
exceto que come<6D>a em 0 ao inv<6E>s de 1.
Se as propriedades 'start' e 'step' da section n<>o foram modificadas,
elas ir<69>o funcionar da mesma maneira que a propriedade 'interation' da
section funcionam, exceto que ela come<EFBFBD>a do 0 ao inv<6E>s de 1.
</para>
</note>
<example>
<title>section property index</title>
<title>propriedade index da section</title>
<programlisting>
{section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{/section}
MOSTRA:
0 id: 1000&lt;br&gt;
1 id: 1001&lt;br&gt;
2 id: 1002&lt;br&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>
]]>
</programlisting>
</example>
</sect2>
@@ -279,28 +309,31 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<title>index_prev</title>
<para>
index_prev <20> usado para mostrar o <20>ndice anterior do loop.
No primeiro loop, isto <20> definido como -1.
No primeiro loop, o valor dele <20> -1.
</para>
<example>
<title>section property index_prev</title>
<title>propriedade index_prev da section</title>
<programlisting>
{section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *}
{if $custid[customer.index_prev] ne $custid[customer.index]}
The customer id changed&lt;br&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{* Para sua informa<6D><61>o, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
{if $custid[consumidor.index_prev] ne $custid[consumidor.index]}
O id do consumidor ir<69> mudar<br>
{/if}
{/section}
MOSTRA:
0 id: 1000&lt;br&gt;
The customer id changed&lt;br&gt;
1 id: 1001&lt;br&gt;
The customer id changed&lt;br&gt;
2 id: 1002&lt;br&gt;
The customer id changed&lt;br&gt;
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
0 id: 1000<br>
O id do consumidor ir<69> mudar<br>
1 id: 1001<br>
O id do consumidor ir<69> mudar<br>
2 id: 1002<br>
O id do consumidor ir<69> mudar<br>
]]>
</programlisting>
</example>
</sect2>
@@ -309,28 +342,31 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<para>
index_next <20> usado para mostrar o pr<70>ximo indice do loop. No <20>ltimo loop,
isto ainda <20> um mais o <20>ndice atual( respeitando a defini<6E><69>o
do atributo step, se dado.)
do atributo step, caso tenha sido definido.)
</para>
<example>
<title>section property index_next</title>
<title>propriedade index_next section</title>
<programlisting>
{section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *}
{if $custid[customer.index_next] ne $custid[customer.index]}
The customer id will change&lt;br&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{* Para sua informa<6D><61>o, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
{if $custid[consumidor.index_next] ne $custid[consumidor.index]}
O id do consumidor ir<69> mudar<br>
{/if}
{/section}
MOSTRA:
0 id: 1000&lt;br&gt;
The customer id will change&lt;br&gt;
1 id: 1001&lt;br&gt;
The customer id will change&lt;br&gt;
2 id: 1002&lt;br&gt;
The customer id will change&lt;br&gt;
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
0 id: 1000<br>
O id do consumidor ir<69> mudar<br>
1 id: 1001<br>
O id do consumidor ir<69> mudar<br>
2 id: 1002<br>
O id do consumidor ir<69> mudar<br>
]]>
</programlisting>
</example>
</sect2>
@@ -339,36 +375,42 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<para>
iteration <20> usado para mostrar a intera<72><61>o atual do loop.
</para>
<note>
<title>Nota:</title>
<para>
NOTA: isto n<>o <20> afetado pelas propriedades start, step e
max, diferentemente das propriedade index. Iteration tamb<EFBFBD>m come<6D>a com 1
ao inv<6E>s de 0 como index. rownum <20> um apelido para iteration,
elas funcionam de modo identico.
'interation' n<>o <20> afetado pelas propriedades start, step e max da section,
diferentemente da propriedade index. Interation diferente de 'index' come<6D>a
com 1 ao inv<6E>s de 0. 'rownum' <20> um sin<EFBFBD>nimo de 'interation', eles exercem a
mesma fun<75><6E>o.
</para>
</note>
<example>
<title>section property iteration</title>
<title>propriedade interation da section</title>
<programlisting>
{section name=customer loop=$custid start=5 step=2}
current loop iteration: {$smarty.section.customer.iteration}&lt;br&gt;
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *}
{if $custid[customer.index_next] ne $custid[customer.index]}
The customer id will change&lt;br&gt;
<![CDATA[
{section name=consumidor loop=$custid start=5 step=2}
intera<72><61>o atual do loop: {$smarty.section.consumidor.iteration}<br>
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{* Para sua informa<6D><61>o, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
{if $custid[consumidor.index_next] ne $custid[consumidor.index]}
O id do consumidor ir<69> mudar<br>
{/if}
{/section}
MOSTRA:
current loop iteration: 1
5 id: 1000&lt;br&gt;
The customer id will change&lt;br&gt;
current loop iteration: 2
7 id: 1001&lt;br&gt;
The customer id will change&lt;br&gt;
current loop iteration: 3
9 id: 1002&lt;br&gt;
The customer id will change&lt;br&gt;
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
intera<EFBFBD><EFBFBD>o atual do loop: 1
5 id: 1000<br>
O id do consumidor ir<69> mudar<br>
intera<EFBFBD><EFBFBD>o atual do loop: 2
7 id: 1001<br>
O id do consumidor ir<69> mudar<br>
intera<EFBFBD><EFBFBD>o atual do loop: 3
9 id: 1002<br>
O id do consumidor ir<69> mudar<br>
]]>
</programlisting>
</example>
</sect2>
@@ -379,62 +421,66 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<20> a primeira.
</para>
<example>
<title>section property first</title>
<title>propriedade first da section</title>
<programlisting>
{section name=customer loop=$custid}
{if $smarty.section.customer.first}
&lt;table&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{if $smarty.section.consumidor.first}
<table>
{/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt;
<tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr>
{if $smarty.section.customer.last}
&lt;/table&gt;
{if $smarty.section.consumidor.last}
</table>
{/if}
{/section}
MOSTRA:
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
<table>
<tr><td>0 id: 1000</td></tr>
<tr><td>1 id: 1001</td></tr>
<tr><td>2 id: 1002</td></tr>
</table>
]]>
</programlisting>
</example>
</sect2>
<sect2 id="section.property.last">
<title>last</title>
<para>
last <20> definido como true de a intera<72><61>o atual da
last <20> definido como true se a intera<72><61>o atual da
section <20> a <20>ltima.
</para>
<example>
<title>section property last</title>
<title>propriedade last da section</title>
<programlisting>
{section name=customer loop=$custid}
{if $smarty.section.customer.first}
&lt;table&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{if $smarty.section.consumidor.first}
<table>
{/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt;
<tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr>
{if $smarty.section.customer.last}
&lt;/table&gt;
{if $smarty.section.consumidor.last}
</table>
{/if}
{/section}
MOSTRA:
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
<table>
<tr><td>0 id: 1000</td></tr>
<tr><td>1 id: 1001</td></tr>
<tr><td>2 id: 1002</td></tr>
</table>
]]>
</programlisting>
</example>
</sect2>
@@ -442,106 +488,120 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<title>rownum</title>
<para>
rownum <20> usado para mostrar a intera<72><61>o atual do loop,
come<6D>ando em um. <20> um apelido para iteration,
elas funcionam de modo identico.
come<6D>ando em um. <20> um sin<EFBFBD>nimo de iteration,
eles exercem a mesma fun<75><6E>o.
</para>
<example>
<title>section property rownum</title>
<title>propriedade rownum da section</title>
<programlisting>
{section name=customer loop=$custid}
{$smarty.section.customer.rownum} id: {$custid[customer]}&lt;br&gt;
{/section}
MOSTRA:
1 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
3 id: 1002&lt;br&gt;
<![CDATA[
{section name=consumidor loop=$custid}
{$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br>
{/section}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>
]]>
</programlisting>
</example>
</sect2>
<sect2 id="section.property.loop">
<title>loop</title>
<para>
loop <20> usado para mostrar o <20>ltimo n<>mero do <20>ndice do loop desta
section. Isto pode ser usado dentro ou depois de section.
loop <20> usado para exibir o n<>mero do <20>ltimo <20>ndice que a section percorreu.
Ele pode ser usado dentro ou ap<EFBFBD>s o t<>rmino da section.
</para>
<example>
<title>section property index</title>
<title>propridade index da section</title>
<programlisting>
{section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{/section}
<![CDATA[
{section name=consumidor loop=$custid}
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}
There were {$smarty.section.customer.loop} customers shown above.
Foram mostrados {$smarty.section.customer.loop} consumidores acima.
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>
MOSTRA:
0 id: 1000&lt;br&gt;
1 id: 1001&lt;br&gt;
2 id: 1002&lt;br&gt;
There were 3 customers shown above.
Foram mostrados 3 consumidores acima.
]]>
</programlisting>
</example>
</sect2>
<sect2 id="section.property.show">
<title>show</title>
<para>
<emphasis>show</emphasis> <20> usado como par<61>metro para section.
<emphasis>show</emphasis> <20> um valor booleano, true ou false. Se
false, a section n<>o ser<65> mostrada. Se existir um sectionelse
presente, esta ser<65> alternativamente mostrado.
<emphasis>show</emphasis> <20> usado como um par<EFBFBD>metro da section. <emphasis>show</emphasis>
<09> um valor booleano, verdadeiro ou falso. Caso seja falso, a section n<>o ser<65> mostrada.
Se existir uma sectionelse presente, ela ser<65> exibida.
</para>
<example>
<title>section attribute show</title>
<title>atributo show da section</title>
<programlisting>
{* $show_customer_info deve ser passada da aplica<63><61>o PHP,
para regular quando mostrar ou n<>o mostrar esta section *}
{section name=customer loop=$custid show=$show_customer_info}
{$smarty.section.customer.rownum} id: {$custid[customer]}&lt;br&gt;
{/section}
<![CDATA[
{* $mostrar_info_consumidor talvez tenha que ser enviada pela
aplica<63><61>o PHP, para decidir quando mostrar ou n<>o mostrar esta section *}
{if $smarty.section.customer.show}
the section was shown.
{else}
the section was not shown.
{/if}
{section name=consumidor loop=$custid show=$mostrar_info_consumidor}
{$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br>
{/section}
{if $smarty.section.consumidor.show}
a section foi mostrada.
{else}
a section n<>o foi mostrada.
{/if}
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>
MOSTRA:
1 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
3 id: 1002&lt;br&gt;
the section was shown.
a section foi mostrada.
]]>
</programlisting>
</example>
</sect2>
<sect2 id="section.property.total">
<title>total</title>
<para>
total <20> usado para mostrar o n<>mero de intera<72><61>es que esta section ter<EFBFBD>.
Isto pode ser usado dentro ou depois da section.
total <20> usado para exibir o n<>mero de intera<72><61>es que esta section ir<EFBFBD> percorrer.
Ela pode ser usada dentro ou ap<EFBFBD>s a section.
</para>
<example>
<title>section property total</title>
<title>propriedade total da section</title>
<programlisting>
{section name=customer loop=$custid step=2}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{/section}
<![CDATA[
{section name=consumidor loop=$custid step=2}
{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}
There were {$smarty.section.customer.total} customers shown above.
Foram mostrados {$smarty.section.customer.loop} consumidores acima.
]]>
</programlisting>
<para>MOSTRA:</para>
<programlisting>
<![CDATA[
0 id: 1000<br>
2 id: 1001<br>
4 id: 1002<br>
MOSTRA:
0 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
4 id: 1002&lt;br&gt;
There were 3 customers shown above.
Foram mostrados 3 consumidores acima.
]]>
</programlisting>
</example>
</sect2>

View File

@@ -3,53 +3,57 @@
<sect1 id="language.function.strip">
<title>strip</title>
<para>
V<>rias vezes web designers tem problemas com espa<70>os em branco e
carriage returns afetam a sa<EFBFBD>da do HTML (browser
"features"), assim voc<6F> tem que colocar todas as suas tags juntas para ter
os resultados desejados. Isto normalmente termina em um
template ileg<65>vel ou que n<>o se consegue ler.
Muitas vezes web designers tem problemas com espa<70>os em branco e
caracteres especiais (carriage returns) afetam a exibi<EFBFBD><EFBFBD>o do HTML
("caracter<65>sticas" do navegador), assim voc<6F> <EFBFBD> obrigado <20> colocar todas
as suas tags juntas para obter os resultados esperados. Isso geralmente
acaba tornando o template ileg<65>vel ou n<EFBFBD>o manipul<75>vel.
</para>
<para>
Tudo dentro de {strip}{/strip} no Smarty tem retirados os espa<70>os em branco
e carriage returns no inicio e final das linhas
antes que sejam mostrados. Deste modo voc<6F> pode manter seu template
leg<65>vel, e n<>o se preocupar com o espa<EFBFBD>o estra causando
Tudo entre as tags {strip}{/strip} no Smarty tem seus espa<70>os extras
ou caracteres especiais (carriage returns) removidos no in<EFBFBD>cio e fim das
linhas antes de elas serem exibidas. Deste modo voc<6F> pode manter seu
template leg<EFBFBD>vel, e n<>o se preocupar com espa<70>os extras causando
problemas.
</para>
<note>
<title>Nota T<>cnica</title>
<para>
{strip}{/strip} n<>o afeta o conte<74>do das vari<72>veis de template.
Veja <link linkend="language.modifier.strip">strip modifier
function</link>.
Veja <link linkend="language.modifier.strip">modificador strip</link>.
</para>
</note>
<example>
<title>strip tags</title>
<programlisting>
{* o seguinte estar<61> tudo junto em uma linha na sa<73>da *}
<![CDATA[
{* o c<>digo abaixo ser<65> convertido em uma linha na hora da exibi<62><69>o *}
{strip}
&lt;table border=0&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;A HREF="{$url}"&gt;
&lt;font color="red"&gt;This is a test&lt;/font&gt;
&lt;/A&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
<table border=0>
<tr>
<td>
<A HREF="{$url}">
<font color="red">Isto <20> um teste</font>
</A>
</td>
</tr>
</table>
{/strip}
MOSTRA:
&lt;table border=0&gt;&lt;tr&gt;&lt;td&gt;&lt;A HREF="http://my.domain.com"&gt;&lt;font color="red"&gt;This is a test&lt;/font&gt;&lt;/A&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</programlisting>
]]>
</programlisting>
<para>MOSTRAR<EFBFBD>:</para>
<programlisting>
<![CDATA[
<table border=0><tr><td><A HREF="http://meu.dominio.com"><font color="red">Isto <20> um teste</font></A></td></tr></table>
]]>
</programlisting>
</example>
<para>
Note que no exemplo acima, todas as linhas come<6D>am e terminam
com tags HTML. Tenha cuidado que todas as linhas ficam juntas.
Se voc<6F> tiver texto simples no inicio ou no final de uma linha,
ele estar<EFBFBD> junto, e pode n<>o ser o resultado desejado.
Observe que no exemplo acima, todas as linhas come<6D>am e terminam com tags HTML.
Esteja ciente para que todas as linhas fiquem juntas.
Se voc<6F> tiver texto simples no in<EFBFBD>cio ou final de uma linha,
ele ser<EFBFBD> juntado na hora da convers<72>o e pode causar resultados
n<>o desejados.
</para>
</sect1>
<!-- Keep this comment at the end of the file