From c2cd578414e8722363c9503a7f984a392178d87b Mon Sep 17 00:00:00 2001 From: didou Date: Sun, 28 Mar 2004 15:23:27 +0000 Subject: [PATCH] let's split the pt_br dir --- docs/pt_BR/appendixes.sgml | 404 -- docs/pt_BR/bookinfo.xml | 39 + docs/pt_BR/designers.sgml | 5882 ----------------- ...tting-started.sgml => getting-started.xml} | 0 docs/pt_BR/html-common.dsl | 382 -- docs/pt_BR/language-defs.ent | 6 + docs/pt_BR/manual.xml | 45 + docs/pt_BR/{preface.sgml => preface.xml} | 0 docs/pt_BR/programmers.sgml | 3275 --------- 9 files changed, 90 insertions(+), 9943 deletions(-) delete mode 100644 docs/pt_BR/appendixes.sgml create mode 100755 docs/pt_BR/bookinfo.xml delete mode 100644 docs/pt_BR/designers.sgml rename docs/pt_BR/{getting-started.sgml => getting-started.xml} (100%) delete mode 100644 docs/pt_BR/html-common.dsl create mode 100644 docs/pt_BR/language-defs.ent create mode 100644 docs/pt_BR/manual.xml rename docs/pt_BR/{preface.sgml => preface.xml} (100%) delete mode 100644 docs/pt_BR/programmers.sgml diff --git a/docs/pt_BR/appendixes.sgml b/docs/pt_BR/appendixes.sgml deleted file mode 100644 index e10488b5..00000000 --- a/docs/pt_BR/appendixes.sgml +++ /dev/null @@ -1,404 +0,0 @@ - - Apêndices - - Localização de Erros - - - erros de Smarty/PHP - - 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: - - - -Erros do Smarty - -Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah' - in /path/to/smarty/Smarty.class.php on line 1041 - -Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name - in /path/to/smarty/Smarty.class.php on line 1041 - - - - O Smarty te mostra o nome do template, o número da linha e o erro. - Depois disso, o erro consiste do número da linha da classe Smarty em que o erro - ocorreu. - - - - 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. - - - -Erros de análise do PHP - -Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75 - - - - Quando você encontra um erro de análise de PHP, o número da linha do erro corresponderá ao - 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. - - - - - Dicas & Truques - - - - Manipulação de Variável Vazia - - 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 - default. - - -Imprimindo &nbsp; quando uma variável está vazia - - -{* A forma mais longa *} - -{if $title eq ""} - &nbsp; -{else} - {$title} -{/if} - - -{* A forma mais simples *} - -{$title|default:"&nbsp;"} - - - - - Manipulação do valor padrão de Variável - - 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 - assign. - - -Atribuindo o valor padrão para uma variável de template - -{* faça 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} - - - - Passando a variável titulo para o template de cabeçalho - - 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 - cabeçalho quando ele é incluído. - - -Passando a variável titulo para o template de cabeçalho - - -mainpage.tpl ------------- - -{include file="header.tpl" titulo="Página Principal"} -{* O corpo do template vem aqui *} -{include file="footer.tpl"} - - -archives.tpl ------------- - -{config_load file="archive_page.conf"} -{include file="header.tpl" titulo=#archivePageTitle#} -{* O corpo do template vem aqui *} -{include file="footer.tpl"} - - -header.tpl ----------- -<HTML> -<HEAD> -<TITLE>{$titulo|default:"BC News"}</TITLE> -</HEAD> -<BODY> - - -footer.tpl ----------- -</BODY> -</HTML> - - - 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 default. - - - - Datas - - Como uma regra básica, sempre passe datas para o smarty como timestamps. Isto permite ao - desenhista de template utilizar date_format - para controle completo sobre a formatação de data, - e também facilita a comparação de datas se - necessário. - - - 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(). - - -Usando date_format - -{$startDate|date_format} - -SAÍDA: - -Jan 4, 2001 - - -{$startDate|date_format:"%Y/%m/%d"} - -SAÍDA: - -2001/01/04 - - -{if $date1 < $date2} - ... -{/if} - - - 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. - - -Convertendo elementos em forma de data de volta para um timestamp - -// isto assume que a forma de seus elementos são nomeadas como -// startDate_Day, startDate_Month, startDate_Year - -$startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day); - -function makeTimeStamp($year="",$month="",$day="") -{ - if(empty($year)) - $year = strftime("%Y"); - if(empty($month)) - $month = strftime("%m"); - if(empty($day)) - $day = strftime("%d"); - - return mktime(0,0,0,$month,$day,$year); -} - - - - WAP/WML - - 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. - - -Usando insert para escrever um cabeçalho WML Content-Type - -// 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: - -{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"> - -<!-- 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> -Bem fácil isso, não é? -</p> -</card> -</wml> - - - - Templates componentizados - - Esta dica é um pouco de hack, mas ainda é uma idéia limpa. - Use-a por seu próprio risco. ;-) - - - 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? - - - 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. - - -Template componentizado - -{* Smarty *} - -{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} - - - 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 include_php para - mais informação. - - -Template componentizado com include_php - -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); -?> - - -index.tpl ---------- - -{* Smarty *} - -{include_php file="load_ticker.php"} - -Nome do Estoque: {$ticker_name} Preço do Estoque: {$ticker_price} - - - - Ofuscando endereços de E-mail - - 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. - - -Exemplo de ofuscamento de um Endereço de E-mail - - -index.tpl ---------- - -envia inquisição para -{mailto address=$EmailAddress encode="javascript" subject="Olá"} - - - - - Nota técnica - - 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. - - - - - - Recursos - - A homepage do Smarty está localizada em http://smarty.php.net/. - Você pode entrar na lista de email enviando um e-mail para - smarty-general-subscribe@lists.php.net. Um arquivo da lista de e-mail pode ser - visto em http://marc.theaimsgroup.com/?l=smarty&r=1&w=2 - - - - BUGS - - Verifique o arquivo de BUGS que vêm com a última distribuição do Smarty, ou - verifique o website. - - - diff --git a/docs/pt_BR/bookinfo.xml b/docs/pt_BR/bookinfo.xml new file mode 100755 index 00000000..bf4a24de --- /dev/null +++ b/docs/pt_BR/bookinfo.xml @@ -0,0 +1,39 @@ + + + + Smarty - the compiling PHP template engine + + + MonteOhrt <monte@ispi.net> + + + AndreiZmievski <andrei@php.net> + + + &build-date; + + 2001-2004 + ispi of Lincoln, Inc. + + + + diff --git a/docs/pt_BR/designers.sgml b/docs/pt_BR/designers.sgml deleted file mode 100644 index 2e92d2a5..00000000 --- a/docs/pt_BR/designers.sgml +++ /dev/null @@ -1,5882 +0,0 @@ - - Smarty para Designers de Template - - - Sintaxe Básica - - Todas as tags de template do Smarty estão fechadas com delimitadores. - Por padrão, estes delimitadores são { e - }, mas eles podem ser mudados. - - - 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. - - - - Comentários - - 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. - - - Comentários - -{* Smarty *} - -{* inclui o arquivo header aqui *} -{include file="header.tpl"} - -{include file=$includeFile} - -{include file=#includeFile#} - -{* Mostra listas dropdown *} -<SELECT name=company> -{html_options values=$vals selected=$selected output=$output} -</SELECT> - - - - - Funções - - Cada tag Smarty mostra uma - variável 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"}. - - - Sintaxe de funções - -{config_load file="colors.conf"} - -{include file="header.tpl"} - -{if $highlight_name} - Welcome, <font color="{#fontColor#}">{$name}!</font> -{else} - Welcome, {$name}! -{/if} - -{include file="footer.tpl"} - - - Ambas as funções internas e as funções customizadas tem a mesma sintaxe nos - templates. Funções internas são o funcionamento do Smarty, - assim como if, section e - strip. Elas não podem ser modificadas. Funções customizadas - são funções adicionais implementadas por plugins. Elas podem ser modificadas - como você quiser, ou você pode adionar novas. html_options e - html_select_date são exemplos de funções customizadas. - - - - - Atributos - - 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. - - - Alguns atributos requerem valores booleanos (true ou false). Estes podem - ser especificados sem aspas true, - on, e yes, ou - false, off, e - no. - - - Sintaxe de atributos de funções - -{include file="header.tpl"} - -{include file=$includeFile} - -{include file=#includeFile#} - -{html_select_date display_days=yes} - -<SELECT name=company> -{html_options values=$vals selected=$selected output=$output} -</SELECT> - - - - Colocando Variáveis em Aspas Duplas - - 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. - - - Sintaxe entre aspas - -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 - -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 - - - - Matemática - - Matemática pode ser aplicada diretamente em valores de variáveis. - - - Exemplos de matemática - -{$foo+1} - -{$foo*$bar} - -{* alguns exemplos mais complicados *} - -{$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`"} - - - - - - - Variáveis - - 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). - - - - 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: - -{$Name} - -{$Contacts[row].Phone} - -<body bgcolor="{#bgcolor#}"> - - - - Variáveis definidas do PHP - - Variáveis que são definidas do PHP são referenciadas precedendo elas - com um sinal de sifrão $. Variáveis definidas dentro do template - com a função assign - também são mostradas desta maneira. - - - - Variáveis definidas - -Hello {$firstname}, glad to see you could make it. -<p> -Your last login was on {$lastLoginDate}. - -MOSTRA: - -Hello Doug, glad to see you could make it. -<p> -Your last login was on January 11th, 2001. - - - - Associative arrays - - Você também pode referenciar matrizes associativas que são definidas no PHP - especificando a chave depois do símbolo '.' - (ponto). - - -Acessando variáveis de matriz associativa - -index.php: - -$smarty = new Smarty; -$smarty->assign('Contacts', - array('fax' => '555-222-9876', - 'email' => 'zaphod@slartibartfast.com', - 'phone' => array('home' => '555-444-3333', - 'cell' => '555-111-1234'))); -$smarty->display('index.tpl'); - -index.tpl: - -{$Contacts.fax}<br> -{$Contacts.email}<br> -{* you can print arrays of arrays as well *} -{$Contacts.phone.home}<br> -{$Contacts.phone.cell}<br> - -MOSTRA: - -555-222-9876<br> -zaphod@slartibartfast.com<br> -555-444-3333<br> -555-111-1234<br> - - - - Índices de Matrizes - - Você pode referencia matrizes pelo seu índice, muito - parecido com a sintaxe nativa do PHP. - - -Acesando matrizes por seus índices - -index.php: - -$smarty = new Smarty; -$smarty->assign('Contacts', - array('555-222-9876', - 'zaphod@slartibartfast.com', - array('555-444-3333', - '555-111-1234'))); -$smarty->display('index.tpl'); - -index.tpl: - -{$Contacts[0]}<br> -{$Contacts[1]}<br> -{* you can print arrays of arrays as well *} -{$Contacts[2][0]}<br> -{$Contacts[2][1]}<br> - -MOSTRA: - -555-222-9876<br> -zaphod@slartibartfast.com<br> -555-444-3333<br> -555-111-1234<br> - - - - Objetos - - Propriedades de objetos definidos do PHP podem ser referenciados - especificando-se o nome da propriedade depois do símbolo '->'. - - -Acessando propriedades de objetos - -name: {$person->name}<br> -email: {$person->email}<br> - -MOSTRA: - -name: Zaphod Beeblebrox<br> -email: zaphod@slartibartfast.com<br> - - - - - - Variáveis carregadas de arquivos de configuração - - Variáveis que são carregadas de arquivos de configuração são referenciadas - colocando-se elas entre cancelas (#), ou com a variável smarty - $smarty.config. - A segunda sintaxe é útil para coloca-las - entre aspas em um atributo. - - - -Variáveis de configuração - -foo.conf: - -pageTitle = "This is mine" -bodyBgColor = "#eeeeee" -tableBorderSize = "3" -tableBgColor = "#bbbbbb" -rowBgColor = "#cccccc" - -index.tpl: - -{config_load file="foo.conf"} -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> -<tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - -index.tpl: (sintaxe alternativa) - -{config_load file="foo.conf"} -<html> -<title>{$smarty.config.pageTitle}</title> -<body bgcolor="{$smarty.config.bodyBgColor}"> -<table border="{$smarty.config.tableBorderSize}" bgcolor="{$smarty.config.tableBgColor}"> -<tr bgcolor="{$smarty.config.rowBgColor}"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - - -SAÍDA: (mesma para ambos exemplos) - -<html> -<title>This is mine</title> -<body bgcolor="#eeeeee"> -<table border="3" bgcolor="#bbbbbb"> -<tr bgcolor="#cccccc"> - <td>First</td> - <td>Last</td> - <td>Address</td> -</tr> -</table> -</body> -</html> - - - Variáveis de um arquivo de configuração não podem ser usadas até - que sejam carregadas de um arquivo de configuração. Este procedimento - é explicado posteriormente neste documento em - config_load. - - - - - A variável reservada {$smarty} - - A variável reservada {$smarty} pode ser utilizada para acessar variáveis - especiais do template. Segue uma lista completa. - - - - Variáveis Request - - Variáveis request como get, post, cookies, server, - environment, e session podem ser acessadas como mostrado - nos exemplos abaixo: - - - - Mostrando váriáveis request - -{* mostra o valor de page da URL (GET) http://www.domain.com/index.php?page=foo *} -{$smarty.get.page} - -{* mostra a variável "page" de um formulário (POST) *} -{$smarty.post.page} - -{* mostra o valor do cookie "username" *} -{$smarty.cookies.username} - -{* mostra a variável do servidor "SERVER_NAME" *} -{$smarty.server.SERVER_NAME} - -{* mostra a variável de ambiente do sistema "PATH" *} -{$smarty.env.PATH} - -{* mostra a variável de session do php "id" *} -{$smarty.session.id} - -{* mostra a variável "username" da união de get/post/cookies/server/env *} -{$smarty.request.username} - - - - - {$smarty.now} - - O timestamp atual pode ser acessado com {$smarty.now}. - O número reflete o número de segundos passados desde o assim chamado - Epoch (1 de Janeiro de 1970) e pode ser passado diretamente para o - modificador date_format para mostrar a data. - - - -Usando {$smarty.now} - -{* usa o modificador date_format para mostrar a data e hora atuais *} -{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"} - - - - {$smarty.const} - - Você pode acessar o valor de constantes PHP diretamente. - - - -Usando {$smarty.const} - -{$smarty.const._MY_CONST_VAL} - - - - - {$smarty.capture} - - A saída capturada via {capture}..{/capture} pode ser acessada usando a variável - {$smarty}. Veja a a seção sobre - capture para um exemplo. - - - - - {$smarty.config} - - A variável {$smarty} pode ser usada para referir variáveis de configuração carregadas. - {$smarty.config.foo} é um sinonimo para {#foo#}. Veja a seção sobre - config_load para um exemplo. - - - - - {$smarty.section}, {$smarty.foreach} - - A variável {$smarty} pode ser usada para se referir a propriedades 'section' e - 'foreach' de loop. Veja a documentação sobre - section e - foreach. - - - - - {$smarty.template} - - Esta variável contém o nome do template - atual que esta sendo processado. - - - - - - - - Modificadores de variáveis - - Modificadores de variáveis podem ser aplicados a variáveis, funções customizadas - ou strings. Para aplicar um modificador, especifique o valor seguido por - |(pipe) e o nome do modificador. Um modificador aceita - parâmetros adicionais que afetam o seu funcionamento. Estes parâmetros seguem - o nome do modificador e são separados por : (dois pontos). - - - Exemplo de modificador - -{* Transforma para maiúsculas *} -<h2>{$title|upper}</h2> - -{* Trunca o $topic para 40 caracteres usa ... no final *} -Topic: {$topic|truncate:40:"..."} - -{* formata uma string literal *} -{"now"|date_format:"%Y/%m/%d"} - -{* aplica um modificador para uma função customizada *} -{mailto|upper address="me@domain.dom"} - - - 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 - @ antes do nome do modificador, assim como: - {$articleTitle|@count} (isto irá mostrar o número de elementos - na matriz $articleTitle.) - - - Modificadores podem ser carregados automaticamente a partir do seu $plugins_dir (veja também: - Naming - Conventions) ou podem ser registrados explicitamente (veja: register_modifier). - Adicionalmente, todas as funções do php podem ser utilizadas como - modificadores implicitamente. (O exemplo - @count 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 - ({"%2.f"|sprintf:$float} atualmente funciona, mas pede algo - mais intuitivo {Por exemplo: - $float|string_format:"%2.f"} que é provido pela distribuição - do Smarty). Segundo: com $security ativado, todas as funções do - php que sejam utilizados como modificadores devem ser declaradas como - confiáveis na matriz - $security_settings['MODIFIER_FUNCS']. - - - - capitalize - - Isto é usado para converter para maiúsculas a primeira letra de todas as palavras em uma variável. - - - capitalize - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Police begin campaign to rundown jaywalkers.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|capitalize} - -SAÍDA: - -Police begin campaign to rundown jaywalkers. -Police Begin Campaign To Rundown Jaywalkers. - - - - count_characters - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - boolean - Não - false - Isto determina quando incluir ou não os espaços em - branco na contagem. - - - - - - Isto é usado para contar o número de caracteres em uma variável. - - -count_characters - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Cold Wave Linked to Temperatures.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|count_characters} -{$articleTitle|count_characters:true} -MOSTRA: - -Cold Wave Linked to Temperatures. -29 -32 - - - - cat - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - cat - Descrição - - - - - 1 - string - Não - empty - Este é o valor para concatenar com a variável dada. - - - - - - Este valor é concatenado com a variável dada. - - -cat - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Psychics predict world didn't end"); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle|cat:" yesterday."} - -MOSTRA: - -Psychics predict world didn't end yesterday. - - - - count_paragraphs - - Isto é usado para contar o número de paragrafos em uma variável. - - -count_paragraphs - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "War Dims Hope for Peace. Child's Death Ruins -Couple's Holiday.\n\nMan is Fatally Slain. Death Causes Loneliness, Feeling of Isolation."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|count_paragraphs} - -MOSTRA: - -War Dims Hope for Peace. Child's Death Ruins Couple's Holiday. - -Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation. -2 - - - - count_sentences - - Isto é usado para contar o número de sentenças em uma variável. - - -count_sentences - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|count_sentences} - -MOSTRA: - -Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe. -2 - - - - count_words - - Isto é usado para contar o número de palavras em uma variável. - - -count_words - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|count_words} - -MOSTRA: - -Dealers Will Hear Car Talk at Noon. -7 - - - - date_format - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Não - %b %e, %Y - Este é o formato para a data mostrada. - - - 2 - string - Não - n/a - Esta é a data padrão se a entrada estiver vazia. - - - - - - Isto formata a data e hora no formato strftime() indicado. - Datas podem ser passadas para o Smarty como timestamps unix, timestamps mysql, - ou qualquer string composta de mês dia ano(interpretavel por strtotime). - Designers podem então usar date_format para ter um controle completo da formatação - da data. Se a data passada para date_format estiver vazia e um segundo parâmetro - for passado, este será usado como a data - para formatar. - - -date_format - -index.php: - -$smarty = new Smarty; -$smarty->assign('yesterday', strtotime('-1 day')); -$smarty->display('index.tpl'); - -index.tpl: - - -{$smarty.now|date_format} -{$smarty.now|date_format:"%A, %B %e, %Y"} -{$smarty.now|date_format:"%H:%M:%S"} -{$yesterday|date_format} -{$yesterday|date_format:"%A, %B %e, %Y"} -{$yesterday|date_format:"%H:%M:%S"} - -MOSTRA: - -Feb 6, 2001 -Tuesday, February 6, 2001 -14:33:00 -Feb 5, 2001 -Monday, February 5, 2001 -14:33:00 - - -date_format conversion specifiers - -%a - nome do dia da semana abreviado de acordo com o local atual - -%A - nome do dia da semana inteiro de acordo com o local atual - -%b - nome do mês abreviado de acordo com o local atual - -%B - nome do mês inteiro de acordo com o local atual - -%c - representação preferencial de data e hora para o local atual - -%C - ano com dois dígitos (o ano dividido por 100 e truncado para um inteiro, intervalo de 00 a 99) - -%d - dia do mês como um número decimal (intervalo de 00 a 31) - -%D - o mesmo que %m/%d/%y - -%e - dia do mês como um número decimal, um único dígito é precedido por um -espaço (intervalo de 1 a 31) - -%g - ano baseado na semana, sem o século [00,99] - -%G - ano baseado na semana, incluindo o século [0000,9999] - -%h - o mesmo que %b - -%H - hora como um número decimal usando um relógio de 24 horas (intervalo de 00 a 23) - -%I - hora como um número decimal usando um relógio de 12 horas (intervalo de 01 a 12) - -%j - dia do ano como um número decimal (intervalo de 001 a 366) - -%k - hora (relógio de 24 horas) digítos únicos são precedidos por um espaço em branco (intervalo de 0 a 23) - -%l - hora como um número decimal usando um relógio de 12 horas, digítos unicos são precedidos -por um espaço em branco (intervalo de 1 a 12) - -%m - mês como número decimal (intervalo de 01 a 12) - -%M - minuto como um número decimal - -%n - caractere de nova linha - -%p - ou `am' ou `pm' de acordo com o valor de hora dado, ou as strings correspondentes ao local atual - -%r - hora na notação a.m. e p.m. - -%R - hora na notação de 24 horas - -%S - segundo como número decimal - -%t - caractere tab - -%T - hora atual, igual a %H:%M:%S - -%u - dia da semana como um número decimal [1,7], com 1 representando segunda-feira - -%U - número da semana do ano atual como um número decimal, começando com o primeiro domingo como primeiro dia da primeira semana - -%V - número da semana do ano atual como um número decimal de acordo com The ISO 8601:1988, -intervalo de 01 a 53, aonde a semana 1 é a primeira semana que tenha pelo menos quatro dias no ano atual, sendo domingo o primeiro dia da semana. - -%w - dia da semana como decimal, domingo sendo 0 - -%W - número da semana do ano atual como número decimal, começando com a primeira segunda como primeiro dia da primeira semana - -%x - representação preferencial da data para o local atualsem a hora - -%X - representação preferencial da hora para o local atual sem a data - -%y - ano como número decimal sem o século (intervalo de 00 a 99) - -%Y - ano como número decimal incluindo o século - -%Z - zona horária ou nome ou abreviação - -%% - um caractere `%' - - -NOTA PARA PROGRAMADORES: date_format é essencialmente um wrapper para a função strftime() do PHP. -Você deverá ter mais ou menos especificadores de conversão disponíveis de acordo com a -função strftime() do sistema operacional aonde o PHP foi compilado. De uma olhada -na página de manual do seu sistema para uma lista completa dos especificadores válidos. - - - - - default - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Não - vazio - Este é o valor padrão para mostrar se a variável - estiver vazia. - - - - - - Isto é usado para definir um valor padrão para uma variável. Se a variável estiver - vazia ou não for definida, o valor padrão dado é mostrado. - Default usa um argumento. - - -default - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle|default:"no title"} -{$myTitle|default:"no title"} - -MOSTRA: - -Dealers Will Hear Car Talk at Noon. -no title - - - - escape - - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Valores Possíveis - Padrão - Descrição - - - - - 1 - string - Não - html,htmlall,url,quotes,hex,hexentity,javascript - html - Este é o formato de escape para usar. - - - - - - Este é usado para escapar html, url, aspas simples em uma variável que já não esteja - escapada, escapar hex, hexentity ou javascript. - Por padrão, é escapado - o html da variável. - - -escape - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "'Stiff Opposition Expected to Casketless Funeral Plan'"); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|escape} -{$articleTitle|escape:"html"} {* escapa & " ' < > *} -{$articleTitle|escape:"htmlall"} {* escapa todas as entidades html *} -{$articleTitle|escape:"url"} -{$articleTitle|escape:"quotes"} -<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a> - -MOSTRA: - -'Stiff Opposition Expected to Casketless Funeral Plan' -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -&#039;Stiff Opposition Expected to Casketless Funeral Plan&#039; -%27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27 -\'Stiff Opposition Expected to Casketless Funeral Plan\' -<a href="mailto:%62%6f%62%40%6d%65%2e%6e%65%74">&#x62;&#x6f;&#x62;&#x40;&#x6d;&#x65;&#x2e;&#x6e;&#x65;&#x74;</a> - - - - indent - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - integer - Não - 4 - Isto define com quantos - caracteres endentar. - - - 2 - string - Não - (um espaço) - Isto define qual caractere usado para endentar. - - - - - - Isto endenta uma string em cada linha, o padrão é 4. Como - parâmetro opcional, você pode especificar o número de caracteres para - endentar. Como segundo parâmetro opcional, você pode especificar o caractere - usado para endentar. (Use "\t" para tabs.) - - -indent - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'NJ judge to rule on nude beach.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} - -{$articleTitle|indent} - -{$articleTitle|indent:10} - -{$articleTitle|indent:1:"\t"} - -MOSTRA: - -NJ judge to rule on nude beach. -Sun or rain expected today, dark tonight. -Statistics show that teen pregnancy drops off significantly after 25. - - NJ judge to rule on nude beach. - Sun or rain expected today, dark tonight. - Statistics show that teen pregnancy drops off significantly after 25. - - NJ judge to rule on nude beach. - Sun or rain expected today, dark tonight. - Statistics show that teen pregnancy drops off significantly after 25. - - NJ judge to rule on nude beach. - Sun or rain expected today, dark tonight. - Statistics show that teen pregnancy drops off significantly after 25. - - - - lower - - Isto é usado para converter para minúsculas uma variável. - - -lower - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|lower} - -MOSTRA: - -Two Convicts Evade Noose, Jury Hung. -two convicts evade noose, jury hung. - - - - nl2br - - Todas as quebras de linha serão convertidas para <br /> na variável - data. Isto é equivalente a função nl2br() do PHP. - - -nl2br - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Sun or rain expected\ntoday, dark tonight"); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle|nl2br} - -MOSTRA: - -Sun or rain expected<br />today, dark tonight - - - - regex_replace - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Sim - n/a - Esta é a expressão regular a ser substituída. - - - 2 - string - Sim - n/a - Esta é a string que irá substituir a expressão regular. - - - - - - Uma expressão regular para localizar e substituir na variável. Use a sintaxe - para preg_replace() do manual do PHP. - - -regex_replace - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Infertility unlikely to\nbe passed on, experts say."); -$smarty->display('index.tpl'); - -index.tpl: - -{* replace each carriage return, tab & new line with a space *} - -{$articleTitle} -{$articleTitle|regex_replace:"/[\r\t\n]/":" "} - -MOSTRA: - -Infertility unlikely to - be passed on, experts say. -Infertility unlikely to be passed on, experts say. - - - - replace - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Sim - n/a - Esta é a string a ser substituida. - - - 2 - string - Sim - n/a - Esta é a string que irá substituir. - - - - - - Um simples localizar e substituir. - - -replace - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Child's Stool Great for Use in Garden."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|replace:"Garden":"Vineyard"} -{$articleTitle|replace:" ":" "} - -OUTPUT: - -Child's Stool Great for Use in Garden. -Child's Stool Great for Use in Vineyard. -Child's Stool Great for Use in Garden. - - - - spacify - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Não - um espaço - O que é inserido entre cada caractere - da variável. - - - - - - Insere um espaço entre cada caractere de uma variável. - Você pode opcionalmente passar um caractere (ou uma string) diferente para inserir. - - -spacify - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|spacify} -{$articleTitle|spacify:"^^"} - -OUTPUT: - -Something Went Wrong in Jet Crash, Experts Say. -S o m e t h i n g W e n t W r o n g i n J e t C r a s h , E x p e r t s S a y . -S^^o^^m^^e^^t^^h^^i^^n^^g^^ ^^W^^e^^n^^t^^ ^^W^^r^^o^^n^^g^^ ^^i^^n^^ ^^J^^e^^t^^ ^^C^^r^^a^^s^^h^^,^^ ^^E^^x^^p^^e^^r^^t^^s^^ ^^S^^a^^y^^. - - - - string_format - - - - - - - - - - Posição do parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - string - Sim - n/a - Este é o formato para ser usado. (sprintf) - - - - - - Este é um meio para formatar strings, como números decimais e outros. - Use a sintaxe para sprintf para a formatação. - - -string_format - -index.php: - -$smarty = new Smarty; -$smarty->assign('number', 23.5787446); -$smarty->display('index.tpl'); - -index.tpl: - -{$number} -{$number|string_format:"%.2f"} -{$number|string_format:"%d"} - -MOSTRA: - -23.5787446 -23.58 -24 - - - - strip - - Isto substitui todos os espaços repetidos, novas linhas e tabs por - um único espaço ou a string indicada. - - - Nota - - Se você quer substituir blocos de texto do template, use a função strip. - - - -strip - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Grandmother of\neight makes\t hole in one."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|strip} -{$articleTitle|strip:"&nbsp;"} - -MOSTRA: - -Grandmother of -eight makes hole in one. -Grandmother of eight makes hole in one. -Grandmother&nbsp;of&nbsp;eight&nbsp;makes&nbsp;hole&nbsp;in&nbsp;one. - - - - strip_tags - - Isto retira as tags de marcação, basicamente tudo entre < e >. - - -strip_tags - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Blind Woman Gets <font face=\"helvetica\">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|strip_tags} - -MOSTRA: - -Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>. -Blind Woman Gets New Kidney from Dad she Hasn't Seen in years. - - - - truncate - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - integer - Não - 80 - Este determina para - quantos caracteres truncar. - - - 2 - string - Não - ... - Este é o texto para adicionar se truncar. - - - 3 - boolean - Não - false - Isto determina quando truncar ou não ao final de uma - palavra(false), ou no caractere exato (true). - - - - - - Isto trunca a variável para uma quantidade de caracteres, o padrão é 80. - Como segundo parâmetro opcional, você pode especificar uma string para mostrar - ao final se a variável foi truncada. Os caracteres da string são incluídos no tamanho - original para a truncagem. por padrão, truncate irá tentar cortar ao final de uma palavra. - Se você quizer cortar na quantidade exata de caracteres, passe o terceiro - parâmetro, que é opcional, - como true. - - -truncate - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|truncate} -{$articleTitle|truncate:30} -{$articleTitle|truncate:30:""} -{$articleTitle|truncate:30:"---"} -{$articleTitle|truncate:30:"":true} -{$articleTitle|truncate:30:"...":true} - -MOSTRA: - -Two Sisters Reunite after Eighteen Years at Checkout Counter. -Two Sisters Reunite after Eighteen Years at Checkout Counter. -Two Sisters Reunite after... -Two Sisters Reunite after -Two Sisters Reunite after--- -Two Sisters Reunite after Eigh -Two Sisters Reunite after E... - - - - upper - - Isto é usado para converter para maiúsculas uma variável. - - -upper - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "If Strike isn't Settled Quickly it may Last a While."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|upper} - -MOSTRA: - -If Strike isn't Settled Quickly it may Last a While. -IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE. - - - - wordwrap - - - - - - - - - - Posição do Parâmetro - Tipo - Requerido - Padrão - Descrição - - - - - 1 - integer - Não - 80 - Isto determina em - quantas colunas quebrar. - - - 2 - string - Não - \n - Esta é a string usada para quebrar. - - - 3 - boolean - Não - false - Isto determina quando quebrar ou não ao final de uma palavra - (false), ou no caractere exato (true). - - - - - - Isto quebra uma string para uma largura de coluna, o padrão é 80. - Como segundo parâmetro opcional, você pode especificar a string que será usada - para quebrar o texto para a próxima linha - (o padrão é um retorno de carro \n). - Por padrão, wordwrap irá tentar quebrar ao final de uma palavra. Se - você quiser quebrar no tamanho exato de caracteres, passe o terceiro parâmetro, que é opcional, como true. - - -wordwrap - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', "Blind woman gets new kidney from dad she hasn't seen in years."); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} - -{$articleTitle|wordwrap:30} - -{$articleTitle|wordwrap:20} - -{$articleTitle|wordwrap:30:"<br>\n"} - -{$articleTitle|wordwrap:30:"\n":true} - -MOSTRA: - -Blind woman gets new kidney from dad she hasn't seen in years. - -Blind woman gets new kidney -from dad she hasn't seen in -years. - -Blind woman gets new -kidney from dad she -hasn't seen in -years. - -Blind woman gets new kidney<br> -from dad she hasn't seen in years. - -Blind woman gets new kidney fr -om dad she hasn't seen in year -s. - - - - - - - Combinando Modificadores - - 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 | (pipe). - - - Combinando Modificadores - -index.php: - -$smarty = new Smarty; -$smarty->assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.'); -$smarty->display('index.tpl'); - -index.tpl: - -{$articleTitle} -{$articleTitle|upper|spacify} -{$articleTitle|lower|spacify|truncate} -{$articleTitle|lower|truncate:30|spacify} -{$articleTitle|lower|spacify|truncate:30:". . ."} - - -MOSTRA: - -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. . . - - - - - - Funções Embutidas - - 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. - - - capture - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Não - default - O nome do bloco capturado - - - assign - string - Não - n/a - O nome da variável para dar o valor da saída capturada - - - - - - capture é usado para coletar toda a saída do template em uma variável ao invés - de mostra-lo. Qualquer conteúdo entre {capture - name="foo"} e {/capture} coletado na variável especificada no atributo name. - O conteúdo capturado pode ser usado no template a apertir da variável especial - $smarty.capture.foo aonde foo é o valor passado para o atributo name. Se você não - passar um atributo name, então será usado "default". Todos os comandos - {capture} devem ter o seu {/capture}. Você pode aninhar(colocar um dentro de outro) - comandos capture. - - - Nota Tecnica - - Smarty 1.4.0 - 1.4.4 coloca o conteúdo capturado dentro da variável - chamada $return. A partir do 1.4.5, este funcionamento foi mudado - para usar o atributo name, então atualize os seus templates de acordo. - - - - - Tenha cuidado quando capturar a saída do comando insert. - Se você tiver o cache em on e você tiver comandos insert - que você espera que funcione com conteúdo do cache, - não capture este conteúdo. - - - - - capturando conteúdo do template - -{* we don't want to print a table row unless content is displayed *} -{capture name=banner} -{include file="get_banner.tpl"} -{/capture} -{if $smarty.capture.banner ne ""} - <tr> - <td> - {$smarty.capture.banner} - </td> - </tr> -{/if} - - - - - config_load - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - file - string - Sim - n/a - O nome do arquivo de configuração para incluir - - - section - string - Não - n/a - O nome da seção a carregar - - - scope - string - Não - local - - Como o escopo das variáveis carregadas é tratado, - o qual deve ser um entre local, parent ou global. local - indica que as variáveis são carregadas no contexto do - template local apenas. parent indica que as variáveis são carregadas - no contexto atual e no template que o chamou. global indica - que as variáveis estão - disponíveis para todos os templates. - - - - global - boolean - No - No - - Quando ou não as variá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 - ainda é suportado. Se scope for indicado, este valor é ignorado. - - - - - - - Esta função é usada para carregar as variáveis de um arquivo de configuração - dentro de um template. Veja Config Files - para maiores - informações. - - -Função config_load - - -{config_load file="colors.conf"} - -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> - <tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> - </tr> -</table> -</body> -</html> - - - Arquivos de configuração podem conter seções também. Voce pode carregar - variáveis de uma seção adicionando o atributo - section. - - - NOTA: Config file sections e a função embutida de - template section não tem nada a ver um com o outro, - eles apenas tem uma mesma - convenção de nomes. - - -Função config_load com seções - -{config_load file="colors.conf" section="Customer"} - -<html> -<title>{#pageTitle#}</title> -<body bgcolor="{#bodyBgColor#}"> -<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}"> - <tr bgcolor="{#rowBgColor#}"> - <td>First</td> - <td>Last</td> - <td>Address</td> - </tr> -</table> -</body> -</html> - - - - foreach,foreachelse - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - from - string - Sim - n/a - O nome da matriz que você estará pegando os elementos - - - item - string - Yes - n/a - O nome da variável - que é o elemento atual - - - key - string - Não - n/a - O nome da variável que é a chave atual - - - name - string - Não - n/a - O nome do loop foreach para acessar as - propriedades foreach - - - - - - Loops foreach são uma alternativa para loops - section. foreach é usado - para pegar cada elemento de uma matriz associativa simples. - A sintaxe para foreach é muito mais simples do que - section, mas tem a desvantagem de poder ser usada - apenas para uma única matriz. Tags foreach devem ter - seu par /foreach. Os parâmetros requeridos são - from e item. O nome do loop - foreach pode ser qualquer coisa que você queira, feito de letras, números - e sublinhados. Loops foreach - podem ser aninhados, e o nome dos loops aninhados devem ser diferentes - um dos outros. A variável from (normalmente uma - matriz de valores) determina o número de vezes do loop - foreach. - foreachelse é executado quando não houverem mais valores - na variável from. - - -foreach - - -{* este exemplo irá mostrar todos os valores da matriz $custid *} -{foreach from=$custid item=curr_id} - id: {$curr_id}<br> -{/foreach} - -MOSTRA: - -id: 1000<br> -id: 1001<br> -id: 1002<br> - - - -foreach key - -{* A key contém a chave para cada valor do loop - -A definição é alo assim: - -$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}<br> - {/foreach} -{/foreach} - -MOSTRA: - -phone: 1<br> -fax: 2<br> -cell: 3<br> -phone: 555-4444<br> -fax: 555-3333<br> -cell: 760-1234<br> - - - - Loop foreach também tem as suas próprias variáveis para manipilar a as propriedades - foreach. Estas são indicadas assim: {$smarty.foreach.foreachname.varname} com - foreachname sendo o nome especificado no atributo - name do foreach. - - - - - iteration - - iteration é usado para mostrar a interação atual do loop. - - - Iteration sempre começa em 1 e - é incrementado um a um em cada interação. - - - - - first - - first é definido como true se a interação atual - do foreach for a primeira. - - - - - last - - last é definido como true se a interação atual - do foreach for a última. - - - - - show - - show é usado como parâmetro para o foreach. - show é um valor booleano, true ou false. Se - false, o foreach não será mostrado. Se tiver um foreachelse - presente, este será alternativamente mostrado. - - - - - total - - total é usado para mostrar o número de interações do - foreach. Isto pode ser usado dentro ou depois do foreach. - - - - - - - - - - include - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - file - string - Sim - n/a - O nome do arquivo de template a incluir - - - assign - string - Não - n/a - O nome de uma variável que irá - conter toda a saída do template - - - [var ...] - [var type] - Não - n/a - Variável para passar localmente para o template - - - - - - Tags include são usados para incluir outros templates no template - atual. Quaisquer variáveis disponíveis no template atual também esta - disponível dentro do template incluido. A tag include deve ter o atributo - "file", o qual contém o caminho do arquivo a incluir. - - - Você pode opcionalmente passar o atributo assign, - o qual irá especificar o nome de uma variável de template para a qual - conterá toda a saída de include ao - invés de mostra-la. - - -function include - -{include file="header.tpl"} - -{* O corpo do template vai aqui *} - -{include file="footer.tpl"} - - - Você pode também passar variáveis para o template incluído como atributos. - Quaisquer variáveis passadas para um template incluído como atributos - estão disponíveis somente dentro do escopo do template incluído. - As variáveis passadas como atributos sobrescrevem as variáveis de - template atuais, no caso de ambas terem o mesmo nome. - - -Função include passando variáveis - -{include file="header.tpl" title="Main Menu" table_bgcolor="#c0c0c0"} - -{* O corpo de template vai aqui *} - -{include file="footer.tpl" logo="http://my.domain.com/logo.gif"} - - - Use a sintaxe para template resources para - incluir arquivos fora do diretório $template_dir. - - -Exemplos de recursos para a função include - -{* caminho absoluto *} -{include file="/usr/local/include/templates/header.tpl"} - -{* caminho absoluto (mesma coisa) *} -{include file="file:/usr/local/include/templates/header.tpl"} - -{* caminho absoluto do windows (DEVE usar o prefixo "file:") *} -{include file="file:C:/www/pub/templates/header.tpl"} - -{* incluir a partir do recurso de template chamado "db" *} -{include file="db:header.tpl"} - - - - include_php - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - file - string - Sim - n/a - O nome do arquivo php a incluir - - - once - boolean - Não - true - Quando incluir ou não o arquivo php mais de uma vez se - incluído várias vezes - - - assign - string - Não - n/a - O nome da variável - que receberá a saída do arquivo php - - - - - - Tags include_php são usadas para incluir um script php no seu template. - Se a segurança estiver ativada, então o script php deve estar localizado - no caminho $trusted_dir. A tag include_php deve ter o atributo - "file", o qual contém o caminho para o arquivo php a ser incluído, - ou relativo a $trusted_dir, ou um caminho absoluto. - - - include_php é um bom meio de manipular templates com componentes, - e mante o código PHP separado dos arquivos de template. Vamos dizer - que você tenha um template que mostre a navegação do seu site, o qual - é prenchido automaticamente a partir de um banco de dados. Você pode - manter a sua lógica PHP que obtém os dados em um diretório separado, - e inclui-la no topo do template. Agora você pode incluir este template - em qualquer lugar sem se preocupar se a informação do banco de dados foi - obtida antes de usar. - - - Por padrão, os arquivos php são incluídos apenas uma vez mesmo - se incluídos várias vezes no template. Você pode especificar que ele - seja incluído todas as vezes com o atributo once. - Definindo once para false irá incluir o script php a cada vez que - ele seja incluído no template. - - - Você pode opcionalmente passar o atributo assign, - o qual irá especificar uma variável de template a qual irá conter - toda a saída de - include_php em vez de mostra-la. - - - O objeto smarty esta disponível como $this dentro do - script php que você incluiu. - - -Função include_php - -load_nav.php -------------- - -<?php - - // carrega variáveis de um banco de dados mysql e define ela 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); - -?> - - -index.tpl ---------- - -{* caminho absoluto ou relativo a $trusted_dir *} -{include_php file="/path/to/load_nav.php"} - -{foreach item="curr_section" from=$sections} - <a href="{$curr_section.url}">{$curr_section.name}</a><br> -{/foreach} - - - - insert - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Sim - n/a - O nome da função insert (insert_name) - - - assign - string - Não - n/a - O nome da variável que - irá receber a saída - - - script - string - Não - n/a - O nome de um script php que será incluido - antes que a função insert seja chamada - - - [var ...] - [var type] - Não - n/a - Variável para passar para a função insert - - - - - - Tags insert funcionam parecido com as tags include, exceto que as tags - insert não vão para o cache quando caching esta ativado. Ela será - executada a cada invocação do template. - - - Vamos dizer que você 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ção estatica aqui, e nós não - queremos que este conteúdo fique no cache com a página. Aqui vem a tag - insert: o template conhece os valores #banner_location_id# e - #site_id# (obtidos de um arquivo de configuração), e precisa chamar - uma função para obter o conteúdo do banner. - - -function insert - -{* example of fetching a banner *} -{insert name="getBanner" lid=#banner_location_id# sid=#site_id#} - - - Neste exemplo, nós estamos usando o nome "getBanner" e passando os parâmetros - #banner_location_id# e #site_id#. O Smarty irá procurar por uma função chamada - insert_getBanner() na sua aplicação PHP, passando os valores de - #banner_location_id# e #site_id# como primeiro argumento em uma - matriz associativa. Todos os nomes de função insert em sua - aplicação devem ser precedidas por "insert_" para prevenir possíveis - problemas com nomes de funções repetidos. Sua funçã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. - Neste exemplo, o Smarty irá chamar esta função: - insert_getBanner(array("lid" => "12345","sid" => "67890")); - e mostrar o resultado retornado no lugar da tag insert. - - - Se você der o atributo "assign", a saída da tag insert será - dada para esta variável ao invés de ser mostrada - no template. Nota: definir a saída para uma variável não é - útil quando o cache esta ativo. - - - Se você der o atributo "script", este script php será incluido - (apenas uma vez) antes da execução da função insert. Este - é o caso onde a função insert não existe ainda, e um script - php deve ser incluído antes para faze-la funcionar. O caminho pode - ser absoluto ou relativo a $trusted_dir. Quando a segurança esta - ativada, o script deve estar em $trusted_dir. - - - O objeto Smarty é passado como segundo argumento. Desde modo - pocê pode refenciar o objeto Smarty - de dentro da função. - - - Nota Tecnica - - É possível ter partes do template fora do cache. - se você tiver caching - ativado, tags insert não estarão no cache. Ela será 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ão do usuário, etc. - - - - - if,elseif,else - - Comandos if no Smarty tem muito da mesma flexibilidade do php, - com algumas adições para a ferramenta de template. - Todo if deve ter o seu - /if. else e - elseif també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","==","!=",">", "<","<=",">=" são todos os qualificadores - de condição válidos, e ddevem estar separados - dos elementos em roda por espaço. - - -comandos if - -{if $name eq "Fred"} - Welcome Sir. -{elseif $name eq "Wilma"} - Welcome Ma'am. -{else} - Welcome, whatever you are. -{/if} - -{* um exemplo com "or" *} -{if $name eq "Fred" or $name eq "Wilma"} - ... -{/if} - -{* o mesmo que acima *} -{if $name == "Fred" || $name == "Wilma"} - ... -{/if} - -{* a seguinte sintaxe não irá funcionar, qualificadores de condição - devem estar separados dos elementos em torno por espaços *} -{if $name=="Fred" || $name=="Wilma"} - ... -{/if} - - -{* parenteses são permitidos *} -{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} - ... -{/if} - -{* você pode também colocar funções php *} -{if count($var) gt 0} - ... -{/if} - -{* testa se o valor é par ou impar *} -{if $var is even} - ... -{/if} -{if $var is odd} - ... -{/if} -{if $var is not odd} - ... -{/if} - -{* test if var is divisible by 4 *} -{if $var is div by 4} - ... -{/if} - -{* test if var is even, grouped by two. i.e., -0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *} -{if $var is even by 2} - ... -{/if} - -{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *} -{if $var is even by 3} - ... -{/if} - - - - ldelim,rdelim - - 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ão este é o meio de contornar isso. - - -ldelim, rdelim - -{* isto irá mostrar os delimitadore no template *} - -{ldelim}funcname{rdelim} is how functions look in Smarty! - - -MOSTRA: - -{funcname} is how functions look in Smarty! - - - - literal - - Tags literal permitem que um bloco de dados seja tomado literalmente, - não sendo interpretado pelo smarty. Isto é útil - para coisas como seçõ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á interpretado, mas mostrado como estiver. - - -Tags literal - -{literal} - <script language=javascript> - - <!-- - function isblank(field) { - if (field.value == '') - { return false; } - else - { - document.loginform.submit(); - return true; - } - } - // --> - - </script> -{/literal} - - - - php - - Tags php permitem que você adicione código php diretamente no template. - Não será escapado, não importando a definição de $php_handling. Isto - é apenas para usuários avançados e normalmente não é necessário. - - -Tags php - -{php} - // incluindo um script php - // diretamente no template. - include("/path/to/display_weather.php"); -{/php} - - - - section,sectionelse - - - - - - - - - - Nome do atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Sim - n/a - O nome da seção - - - loop - [$variable_name] - Sim - n/a - O nome da variável para determinar o - número de interações - - - start - integer - Não - 0 A posição - do índice que a seção vai começar. Se o valor - é negativo, a posição de inicio é calculada a partir - do final da matriz. For exemplo, se houverem - sete valores na matriz e start for -2, o - índice inicial é 5. Valores inválidos (valores fora do - tamanho da matriz) são automaticamente truncados - para o valor válido mais próximo. - - - step - integer - Não - 1 - O valor do passo que será usado para o loop - na matriz. Por exemplo, step=2 irá realizar o loop com - os índices 0,2,4, etc. Se step for negativo, ele irá caminhar - pela matriz de trás para frente. - - - max - integer - Não - 1 - Define o número máximo de loops - para a section. - - - show - boolean - Não - true - Determina quando mostrar ou não esta section - - - - - - sections de template são usada para realizar um loop por uma matriz. Todas as tags - section devem ter as suas - /section. Parâmetros requeridos são - name e loop. O nome - de section pode ser o que você 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ável do loop - (normalmente uma matriz de valores) determina o número de vezes do - loop da section. Quando estiver mostrando uma variável dentro de uma section, - o nome da section deve estar ao lado da variável dentro de conchetes - []. sectionelse é - executado quando não houverem valores para a variável de loop. - - -section - - -{* este exemplo irá mostrar todos os valores de $custid array *} -{section name=customer loop=$custid} - id: {$custid[customer]}<br> -{/section} - -MOSTRA: - -id: 1000<br> -id: 1001<br> -id: 1002<br> - - - -loop de variável section - -{* a variável de loo´p determina o número de vezes do loop. - Vocâ pode acessar qualquer variável do template dentro da section. - Este exemplo assume que $custid, $name e $address são todas - matrizes contendo o mesmo número de valores *} -{section name=customer loop=$custid} - id: {$custid[customer]}<br> - name: {$name[customer]}<br> - address: {$address[customer]}<br> - <p> -{/section} - - -MOSTRA: - -id: 1000<br> -name: John Smith<br> -address: 253 N 45th<br> -<p> -id: 1001<br> -name: Jack Jones<br> -address: 417 Mulberry ln<br> -<p> -id: 1002<br> -name: Jane Munson<br> -address: 5605 apple st<br> -<p> - - - -Nomes de section - -{* o nome de section pode ser o que você quiser, - e é usado para referenciar os dados dentro da section *} -{section name=mydata loop=$custid} - id: {$custid[mydata]}<br> - name: {$name[mydata]}<br> - address: {$address[mydata]}<br> - <p> -{/section} - - - -sections aninhadas - -{* sections podem ser aninhadas tão profundamente quanto você quiser. Com sections aninhadas, - você pode acessar estruturas de dados complexas, como matriz multi-dimensionais. - Neste exemplo, $contact_type[customer] é uma matriz de - tipos de contato para o custumer atual. *} -{section name=customer loop=$custid} - 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]}<br> - {/section} - <p> -{/section} - - -MOSTRA: - -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> - - - -sections e matrizes associativas - -{* Este é um exemplo de mostrar os dados de matriz associativa - dentro da section *} -{section name=customer loop=$contacts} - name: {$contacts[customer].name}<br> - home: {$contacts[customer].home}<br> - cell: {$contacts[customer].cell}<br> - e-mail: {$contacts[customer].email}<p> -{/section} - - -MOSTRA: - -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> - - - - - -sectionelse - -{* sectionelse irá executar se não houverem mais valores $custid *} -{section name=customer loop=$custid} - id: {$custid[customer]}<br> -{sectionelse} - there are no values in $custid. -{/section} - - - Sections também tem as suas próprias variáveis que manipulam as propriedaes section. - Estas são indicadas assim: {$smarty.section.sectionname.varname} - - - NOTA: a partir do Smarty 1.5.0, a sintaxe para as variáveis de propriedades de section - mudou de {%sectionname.varname%} para - {$smarty.section.sectionname.varname}. A sintaxe antiga ainda é suportada, - mas você irá ver referencias apenas a nova sintaxe nos - exemplos do manual. - - - index - - index é usado para mostrar o índice atual do loop, começando em zero - (ou pelo atributo start se dado), e incrementando por um (ou pelo - atributo step se dado). - - - Nota Técnica - - Se as propriedades section não for modificada, - então isto funciona igual a propriedade iteration da section, - exceto que começa em 0 ao invés de 1. - - - - section property index - - {section name=customer loop=$custid} - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {/section} - - - MOSTRA: - - 0 id: 1000<br> - 1 id: 1001<br> - 2 id: 1002<br> - - - - - index_prev - - index_prev é usado para mostrar o índice anterior do loop. - No primeiro loop, isto é definido como -1. - - - section property index_prev - - {section name=customer loop=$custid} - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *} - {if $custid[customer.index_prev] ne $custid[customer.index]} - The customer id changed<br> - {/if} - {/section} - - - MOSTRA: - - 0 id: 1000<br> - The customer id changed<br> - 1 id: 1001<br> - The customer id changed<br> - 2 id: 1002<br> - The customer id changed<br> - - - - - index_next - - index_next é usado para mostrar o próximo indice do loop. No último loop, - isto ainda é um mais o índice atual( respeitando a definição - do atributo step, se dado.) - - - section property index_next - - {section name=customer loop=$custid} - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {* 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<br> - {/if} - {/section} - - - MOSTRA: - - 0 id: 1000<br> - The customer id will change<br> - 1 id: 1001<br> - The customer id will change<br> - 2 id: 1002<br> - The customer id will change<br> - - - - - iteration - - iteration é usado para mostrar a interação atual do loop. - - - NOTA: isto não é afetado pelas propriedades start, step e - max, diferentemente das propriedade index. Iteration também começa com 1 - ao invés de 0 como index. rownum é um apelido para iteration, - elas funcionam de modo identico. - - - section property iteration - - {section name=customer loop=$custid start=5 step=2} - current loop iteration: {$smarty.section.customer.iteration}<br> - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {* 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<br> - {/if} - {/section} - - - MOSTRA: - - current loop iteration: 1 - 5 id: 1000<br> - The customer id will change<br> - current loop iteration: 2 - 7 id: 1001<br> - The customer id will change<br> - current loop iteration: 3 - 9 id: 1002<br> - The customer id will change<br> - - - - - first - - first é definido como true se a interação atual da section - é a primeira. - - - section property first - - {section name=customer loop=$custid} - {if $smarty.section.customer.first} - <table> - {/if} - - <tr><td>{$smarty.section.customer.index} id: - {$custid[customer]}</td></tr> - - {if $smarty.section.customer.last} - </table> - {/if} - {/section} - - - MOSTRA: - - <table> - <tr><td>0 id: 1000</td></tr> - <tr><td>1 id: 1001</td></tr> - <tr><td>2 id: 1002</td></tr> - </table> - - - - - last - - last é definido como true de a interação atual da - section é a última. - - - section property last - - {section name=customer loop=$custid} - {if $smarty.section.customer.first} - <table> - {/if} - - <tr><td>{$smarty.section.customer.index} id: - {$custid[customer]}</td></tr> - - {if $smarty.section.customer.last} - </table> - {/if} - {/section} - - - MOSTRA: - - <table> - <tr><td>0 id: 1000</td></tr> - <tr><td>1 id: 1001</td></tr> - <tr><td>2 id: 1002</td></tr> - </table> - - - - - rownum - - rownum é usado para mostrar a interação atual do loop, - começando em um. É um apelido para iteration, - elas funcionam de modo identico. - - - section property rownum - - {section name=customer loop=$custid} - {$smarty.section.customer.rownum} id: {$custid[customer]}<br> - {/section} - - - MOSTRA: - - 1 id: 1000<br> - 2 id: 1001<br> - 3 id: 1002<br> - - - - - loop - - loop é usado para mostrar o último número do índice do loop desta - section. Isto pode ser usado dentro ou depois de section. - - - section property index - - {section name=customer loop=$custid} - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {/section} - - There were {$smarty.section.customer.loop} customers shown above. - - MOSTRA: - - 0 id: 1000<br> - 1 id: 1001<br> - 2 id: 1002<br> - - There were 3 customers shown above. - - - - - show - - show é usado como parâmetro para section. - show é um valor booleano, true ou false. Se - false, a section não será mostrada. Se existir um sectionelse - presente, esta será alternativamente mostrado. - - - section attribute show - - {* $show_customer_info deve ser passada da aplicaçã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]}<br> - {/section} - - {if $smarty.section.customer.show} - the section was shown. - {else} - the section was not shown. - {/if} - - - MOSTRA: - - 1 id: 1000<br> - 2 id: 1001<br> - 3 id: 1002<br> - - the section was shown. - - - - - total - - total é usado para mostrar o número de interações que esta section terá. - Isto pode ser usado dentro ou depois da section. - - - section property total - - {section name=customer loop=$custid step=2} - {$smarty.section.customer.index} id: {$custid[customer]}<br> - {/section} - - There were {$smarty.section.customer.total} customers shown above. - - MOSTRA: - - 0 id: 1000<br> - 2 id: 1001<br> - 4 id: 1002<br> - - There were 3 customers shown above. - - - - - - strip - - Várias vezes web designers tem problemas com espaços em branco e - carriage returns afetam a saída do HTML (browser - "features"), assim você tem que colocar todas as suas tags juntas para ter - os resultados desejados. Isto normalmente termina em um - template ilegível ou que não se consegue ler. - - - Tudo dentro de {strip}{/strip} no Smarty tem retirados os espaços em branco - e carriage returns no inicio e final das linhas - antes que sejam mostrados. Deste modo você pode manter seu template - legível, e não se preocupar com o espaço estra causando - problemas. - - - Nota Técnica - - {strip}{/strip} não afeta o conteúdo das variáveis de template. - Veja strip modifier - function. - - - -strip tags - -{* o seguinte estará tudo junto em uma linha na saída *} -{strip} -<table border=0> - <tr> - <td> - <A HREF="{$url}"> - <font color="red">This is a test</font> - </A> - </td> - </tr> -</table> -{/strip} - - -MOSTRA: - -<table border=0><tr><td><A HREF="http://my.domain.com"><font color="red">This is a test</font></A></td></tr></table> - - - Note que no exemplo acima, todas as linhas começam e terminam - com tags HTML. Tenha cuidado que todas as linhas ficam juntas. - Se você tiver texto simples no inicio ou no final de uma linha, - ele estará junto, e pode não ser o resultado desejado. - - - - - - Funções Personalizadas - - Smarty vem com várias funções personalizadas que você - pode usar em seus templates. - - - assign - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - var - string - Sim - n/a - O nome da variável que esta ganhando valor - - - value - string - Yes - n/a - O valor que esta sendo dado - - - - - - assign é usado para definir valores para variável - de template durante a execução do template. - - -assign - -{assign var="name" value="Bob"} - -The value of $name is {$name}. - -MOSTRA: - -The value of $name is Bob. - - - - counter - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Não - default - O nome do contador - - - start - number - Não - 1 - O número inicial para contar a partir de - - - skip - number - Não - 1 - O intervalo para contar - - - direction - string - Não - up - A direção para contar (up/down) - - - print - boolean - Não - true - Quando mostrar ou não o valor - - - assign - string - Não - n/a - A variável de template que vai - receber a saída - - - - - - counter é usada para mostrar uma contagem. counter irá se lembrar de - count em cada interação. Você pode ajustar o número, o intervalo - e a direção da contagem, assim como detrminar quando - mostrar ou não a contagem. Você pode ter varios contadores ao - mesmo tempo, dando um nome único para cada um. Se você não der um nome, - o nome 'default' será usado. - - - Se você indicar o atributo especial "assign", a saída da função counter - irá para essa variável de template ao invés de - ser mostrada no template. - - -counter - -{* inicia a contagem *} -{counter start=0 skip=2 print=false} - -{counter}<br> -{counter}<br> -{counter}<br> -{counter}<br> - -MOSTRA: - -2<br> -4<br> -6<br> -8<br> - - - - cycle - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Não - default - O nome do ciclo - - - values - mixed - Sim - N/A - Os valores do ciclo, ou uma lista delimitada - por vírgula (veja o atributo delimiter), - ou uma matriz de valores. - - - print - boolean - Não - true - Quando mostrar ou não o valor - - - advance - boolean - Não - true - Quando avançar ou não para o próximo valor - - - delimiter - string - Não - , - O delimitador para usar no atributo values. - - - assign - string - Não - n/a - A variável de template que - receberá a saída - - - - - - Cycle é usado para fazer um clico através de um conjunto de valores. - Isto torna fácil alternar entre duas ou mais cores em uma tabela, - ou entre uma matriz de valores. - - - Você pode usar o cycle em mais de um conjunto de valores - no seu template. Dê a cada conjunto de valores - um nome único. - - - Você pode fazer com que o valor atual não seja mostrado - definindo o atributo print para false. Isto é útil para - pular um valor. - - - O atributo advance é usado para repetir um valor. Quando definido - para false, a próxima chamada para cycle irá mostrar o mesmo valor. - - - Se você indicar o atributo especial "assign", a saída da função - cycle irá para a variável de template ao invés de ser - mostrado diretamente no template. - - -cycle - -{section name=rows loop=$data} -<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> - <td>{$data[rows]}</td> -</tr> -{/section} - -MOSTRA: - -<tr bgcolor="#eeeeee"> - <td>1</td> -</tr> -<tr bgcolor="#d0d0d0"> - <td>2</td> -</tr> -<tr bgcolor="#eeeeee"> - <td>3</td> -</tr> - - - - - debug - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - output - string - Não - html - Tipo de saída, html ou javascript - - - - - - {debug} mostra o console de debug na página. Isto funciona independente - da definição de debug. - Já que isto é executado em tempo de execução, isto é capaz apenas de - mostrar as variáveis definidas, e não os templates - que estejam em uso. Mas você pode ver todas as variáveis - disponíveis no escopo do template. - - - - eval - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - var - mixed - Sim - n/a - Variável (ou string) para avaliar - - - assign - string - Não - n/a - A variável de template que - receberá a saída - - - - - - eval é usado para avaliar uma variável como template. Isto pode ser usado para - coisas como embutir tags/variáveis de template dentro de variáveis - ou tags/variáveis dentro de variáveis em um arquivo de configuração. - - - Se você indicar o atributo especial "assign", a saída da função - eval irá para esta variável de template ao - invés de aparecer no template. - - - Nota Técnica - - Variáveis avaliadas são tratadas igual a templates. Elas seguem - o mesmo funcionamento para escapar e para segurança como - se fossem templates. - - - - Nota Técnica - - Variáveis avaliadas são compiladas a cada invocação, as versões - compiladas não são salvas. Entretando, se você tiver o cache ativado, - a saída vai ficar no cache junto com o resto do template. - - - -eval - -setup.conf ----------- - -emphstart = <b> -emphend = </b> -title = Welcome to {$company}'s home page! -ErrorCity = You must supply a {#emphstart#}city{#emphend#}. -ErrorState = You must supply a {#emphstart#}state{#emphend#}. - - -index.tpl ---------- - -{config_load file="setup.conf"} - -{eval var=$foo} -{eval var=#title#} -{eval var=#ErrorCity#} -{eval var=#ErrorState# assign="state_error"} -{$state_error} - -MOSTRA: - -This is the contents of foo. -Welcome to Foobar Pub & Grill's home page! -You must supply a <b>city</b>. -You must supply a <b>state</b>. - - - - - - fetch - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - file - string - Sim - n/a - O arquivo, site http ou ftp para obter - - - assign - string - Não - n/a - A variável de template - que vai receber a saída - - - - - - fetch é usado para obter arquivos do sistema de arquivos local, - http ou ftp, e mostrar o seu conteúdo. Se o nome do arquivo começar - com "http://", a página do web site será obtidae mostrada. Se o - nome do arquivo começar com "ftp://", o arquivo será obtido do servidor - ftp e mostrado. Para arquivos locais, o caminho completo do sistema de - arquivos deve ser dado, ou um caminho relativo ao script php executado. - - - Se você indicar o atributo especial "assign", a saída da função - fetch irá para uma variável de template ao ivés de - ser mostrado no template. (novo no Smarty 1.5.0) - - - Nota Técnica - - Isto não suporta redirecionamento http, tenha - certesa de incluir a barra no final aonde necessário. - - - - Nota Técnica - - Se a segurança do template esta ativada e você - estiver obtendo um arquivo do sistema de arquivos local, isto - irá permitir apenas arquivos de um dos diretórios - definidos como seguros. ($secure_dir) - - - -fetch - -{* inclui algum javascript no seu template *} -{fetch file="/export/httpd/www.domain.com/docs/navbar.js"} - -{* embute algum texto sobre o tempo de outro web site *} -{fetch file="http://www.myweather.com/68502/"} - -{* obtém um arquivo de notícias via ftp *} -{fetch file="ftp://user:password@ftp.domain.com/path/to/currentheadlines.txt"} - -{* coloca o conteúdo obtido para uma varável de template *} -{fetch file="http://www.myweather.com/68502/" assign="weather"} -{if $weather ne ""} - <b>{$weather}</b> -{/if} - - - - html_checkboxes - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - name - string - Não - checkbox - O nome da lista checkbox - - - values - array - Sim, a menos que estaja usando o atributo options - n/a - Uma matriz de valores para os botões checkbox - - - output - array - Sim, a menos que estaja usando o atributo options - n/a - uma matriz de saída para os botões checkbox - - - selected - string/array - Não - empty - O(s) elemento(s) checkbox marcado(s) - - - options - matriz - Sim, a mesnos que esteja usando values e output - n/a - Uma matriz associativa de valores e saída - - - separator - string - Não - empty - string de texto para separar cada checkbox - - - labels - boolean - Não - true - Adicionar tags <label> para na saída - - - - - - html_checkboxes é uma função personalizada que cria um grupo de - checkbox com os dados providos. Ela cuida de qual(is) item(s) - estão selecionado(s) por padrão. Os atributos requeridos são - values e output, a menos que você use options. - Toda a saída é compatível com XHTML. - - - Todos os parâmetro que não estejam na lista acima são mostrados - como pares nome/valor dentro de cada tag <input> criada. - - -html_checkboxes - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_ids', array(1000,1001,1002,1003)); -$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Charlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_checkboxes', array( - 1000 => 'Joe Schmoe', - 1001 => 'Jack Smith', - 1002 => 'Jane Johnson', - 1003 => 'Charlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -{html_checkboxes name="id" options=$cust_checkboxes checked=$customer_id separator="<br />"} - - -MOSTRA: (ambos os exemplos) - -<label><input type="checkbox" name="checkbox[]" value="1000" />Joe Schmoe</label><br /> -<label><input type="checkbox" name="checkbox[]" value="1001" checked="checked" />Jack Smith</label><br /> -<label><input type="checkbox" name="checkbox[]" value="1002" />Jane Johnson</label><br /> -<label><input type="checkbox" name="checkbox[]" value="1003" />Charlie Brown</label><br /> - - - - html_image - - - - - - - - - - Nome do Atributo - Tipo - Exigido - Padrão - Descrição - - - - - file - string - Sim - n/a - name/path para a imagem - - - border - string - Não - 0 - tamanho da borda de contorno da imagem - - - height - string - Não - altura atual da imagem - altura com a qual a imagem deve ser mostrada - - - width - string - Não - largura atual da imagem - largura com a qual a imagem deve ser mostrada - - - basedir - string - Não - doc root do servidor - diretório de base a caminhos relativos - - - alt - string - Não - "" - descrição alternativa da imagem - - - href - string - Não - n/a - valor href para aonde a imagem será ligada - - - - - - html_image é uma função customizada que gera uma tag HTML para uma imagem. - A altura e a largura são automaticamente calculadas a partir do arquivo de imagem se - nenhum valor é fornecido. - - - basedir é o diretório base do qual caminhos relativos de imagens estão baseados. - Se não fornecido, o document root do servidor (variável de ambiente DOCUMENT_ROOT) é usada - como o diretório base. Se a segurança está habilitada, o caminho para a imagem deve estar dentro - de um diretório seguro. - - - href é o valor href para onde a imagem será ligada. Se um link é fornecido, - uma tag <a href="LINKVALUE"><a> é posta em volta da tag da imagem. - - - Nota Técnica - - html_image requer uma ação ao disco para ler a imagem e calcular - a altura e a largura. Se você não usa caching de template, normalmente é - melhor evitar html_image e deixar as tags de imagem estáticas para performance - otimizada. - - - -html_image - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->display('index.tpl'); - -index.tpl: - -{html_image file="pumpkin.jpg"} -{html_image file="/path/from/docroot/pumpkin.jpg"} -{html_image file="../path/relative/to/currdir/pumpkin.jpg"} - -OUTPUT: (possível) - -<img src="pumpkin.jpg" alt="" border="0" width="44" height="68" /> -<img src="/path/from/docroot/pumpkin.jpg" alt="" border="0" width="44" height="68" /> -<img src="../path/relative/to/currdir/pumpkin.jpg" alt="" border="0" width="44" height="68" /> - - - - - - - - html_options - - - - - - - - - - Nome do Atributo - Tipo - Exigido - Padrão - Descrição - - - - - values - array - Sim, a menos que usando atributos de opções - n/a - um array de valores para o menu dropdown - - - output - array - Sim, a menos que usando atributos de opções - n/a - um array de saída para o menu dropdown - - - selected - string/array - Não - empty - o elemento do option selecionado - - - options - associative array - Sim, a menos que usando valores e saída - n/a - um array associativo de valores e saída - - - name - string - Não - empty - nome do grupo selecionado - - - - - - html_options é uma função customizada que cria um grupo html option com os dados fornecidos. - Ela está atenta de quais itens são selecionados por definição. Atributos exigidos são valores e - saída, a menos que você use options - no lugar. - - - Se um valor dado é um array, ele será tratado como um OPTGROUP html, - e mostrará os grupos. - Recursion é suportado com OPTGROUP. Todas as saídas estão compatíveis com XHTML. - - - Se o atributo opcional name é dado, as tags - <select name="groupname"></select> irão enclausurar a lista de opções. - Caso contrário apenas a lista de opções é gerada. - - - Todos os parâmetros que não estão na lista acima são exibidos como - name/value-pairs dentro de <select>-tag. Eles são ignorados se o opcional - namenão é dado. - - -html_options - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_ids', array(1000,1001,1002,1003)); -$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane -Johnson','Carlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -<select name=customer_id> - {html_options values=$cust_ids selected=$customer_id output=$cust_names} -</select> - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_options', array( - 1001 => 'Taniel Franklin', - 1002 => 'Fernando Correa', - 1003 => 'Marcelo Pereira', - 1004 => 'Charlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - -index.tpl: - -<select name=customer_id> - {html_options options=$cust_options selected=$customer_id} -</select> - - -OUTPUT: (both examples) - -<select name=customer_id> - <option value="1000">Taniel Franklin</option> - <option value="1001" selected="selected">Fernando Correa</option> - <option value="1002">Marcelo Pereira</option> - <option value="1003">Charlie Brown</option> -</select> - - - - html_radios - - - - - - - - - - Nome do Atributo - Tipo - Exigido - Padrão - Descrição - - - - - name - string - Não - radio - nome da radio list - - - values - array - Sim, a menos que utilizando atributo de opções - n/a - um array de valores para radio buttons - - - output - array - Sim, a menos que utilizando atributo de opções - n/a - um array de saída pra radio buttons - - - checked - string - Não - empty - O elemento do radio assinalado - - - options - associative array - Sim, a menos que utilizando valores e saída - n/a - um array associativo de valores e saída - - - separator - string - Não - empty - string de texto para separae cada item de radio - - - - - - html_radios é uma função customizada que cria grupo de botões de radio html - com os dados fornecidos. Ele está atento para qual item está selecionado por definição. - Atributos exigidos são valores e saídas, a menos que você use opções no lugar disso. Toda - saída é compatível com XHTML. - - - Todos os parâmetros que não estão na lista acima são impressos como - name/value-pairs de dentro de cada <input>-tags criada. - - - -html_radios - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_ids', array(1000,1001,1002,1003)); -$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane -Johnson','Carlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} - - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('cust_radios', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson', - 1004 => 'Charlie Brown')); -$smarty->assign('customer_id', 1001); -$smarty->display('index.tpl'); - - -index.tpl: - -{html_radios name="id" options=$cust_radios checked=$customer_id separator="<br />"} - - -OUTPUT: (both examples) - -<input type="radio" name="id[]" value="1000">Taniel Fraklin<br /> -<input type="radio" name="id[]" value="1001" checked="checked"><br /> -<input type="radio" name="id[]" value="1002">Marcelo Pereira<br /> -<input type="radio" name="id[]" value="1003">Charlie Brown<br /> - - - - html_select_date - - - - - - - - - - Nome do Atributo - Tipo - Exigido - Padrão - Descrição - - - - - prefix - string - Não - Date_ - Com o que prefixar o nome da variável - - - time - timestamp/YYYY-MM-DD - Não - tempo atual no timestamp do unix ou YYYY-MM-DD - format - qual date/time para usar - - - start_year - string - Não - ano atual - o primeiro ano no menu dropdown, ou o - número do ano, ou relativo ao ano atual (+/- N) - - - end_year - string - Não - da mesma forma que start_year - o último ano no menu dropdown, ou o - número do ano, ou relativo ao ano atual (+/- N) - - - display_days - boolean - Não - true - se mostra os dias ou não - - - display_months - boolean - No - true - whether to display months or not - - - display_years - boolean - Não - true - se mostra os anos ou não - - - month_format - string - Não - %B - qual seria o formato do mês (strftime) - - - day_format - string - Não - %02d - a saída do dia seria em qual formato (sprintf) - - - day_value_format - string - No - %d - o valor do dia seria em qual formato (sprintf) - - - year_as_text - booleano - Não - false - se mostra ou não o ano como texto - - - reverse_years - booleano - Não - false - mostra os anos na ordem reversa - - - field_array - string - Não - null - - se um nome é dado, as caixas de seleção serão exibidos assim que os resultados - forem devolvidos ao PHP - na forma de name[Day], name[Year], name[Month]. - - - - day_size - string - No - null - adiciona o atributo de tamanho para a tag select se for dada - - - month_size - string - Não - null - adiciona o atributo de tamanho para a tag de select se for dada - - - year_size - string - Não - null - adiciona o atributo de tamanho para a tag de select se for dada - - - all_extra - string - No - null - adiciona atributos extras para todas as tags select/input se - forem dadas - - - day_extra - string - Não - null - adiciona atributos - extras para todas as tags select/input se forem dadas - - - month_extra - string - Não - null - adiciona atributos extras - para todas as tags select/input se forem dadas - - - year_extra - string - Não - null - adiciona atributos extras - para todas as tags select/input se forem dadas - - - field_order - string - Não - MDY - a ordem para se mostrar os campos - - - field_separator - string - Não - \n - string exibida entre os diferentes campos - - - month_value_format - string - Não - %m - formato strftime dos valores do mês, o padrão é - %m para número de mês. - - - - - - html_select_date é uma função customizada que cria menus dropdowns - de data para você. Ele pode mostrar algo ou tudo de ano, mês e dia. - - -html_select_date - -{html_select_date} - - -OUTPUT: - -<select name="Date_Month"> -<option value="1">January</option> -<option value="2">February</option> -<option value="3">March</option> -<option value="4">April</option> -<option value="5">May</option> -<option value="6">June</option> -<option value="7">July</option> -<option value="8">August</option> -<option value="9">September</option> -<option value="10">October</option> -<option value="11">November</option> -<option value="12" selected>December</option> -</select> -<select name="Date_Day"> -<option value="1">01</option> -<option value="2">02</option> -<option value="3">03</option> -<option value="4">04</option> -<option value="5">05</option> -<option value="6">06</option> -<option value="7">07</option> -<option value="8">08</option> -<option value="9">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13" selected>13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -</select> -<select name="Date_Year"> -<option value="2001" selected>2001</option> -</select> - - - - -html_select_date - - -{* ano de começo e fim pode ser relativo ao ano atual *} -{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false} - -OUTPUT: (o ano atual é 2000) - -<select name="StartDateMonth"> -<option value="1">January</option> -<option value="2">February</option> -<option value="3">March</option> -<option value="4">April</option> -<option value="5">May</option> -<option value="6">June</option> -<option value="7">July</option> -<option value="8">August</option> -<option value="9">September</option> -<option value="10">October</option> -<option value="11">November</option> -<option value="12" selected>December</option> -</select> -<select name="StartDateYear"> -<option value="1999">1995</option> -<option value="1999">1996</option> -<option value="1999">1997</option> -<option value="1999">1998</option> -<option value="1999">1999</option> -<option value="2000" selected>2000</option> -<option value="2001">2001</option> -</select> - - - - html_select_time - - - - - - - - - - Nome do Atributo - Tipo - Exigido - Padrão - Descrição - - - - - prefix - string - Não - Time_ - com o que prefixar o nome da variável - - - time - timestamp - Não - tempo atual - qual date/time para usar - - - display_hours - booleano - Não - true - Exibir ou não as horas - - - display_minutes - booleano - Não - true - Exibir ou não os minutos - - - display_seconds - booleano - Não - true - Exibir ou não os segundos - - - display_meridian - booleano - Não - true - Exibir ou não da forma (am/pm) - - - use_24_hours - booleano - Não - true - Usar ou não relógio de 24 horas - - - minute_interval - inteiro - Não - 1 - intervalo dos números dos minutos do menu dropdown - - - second_interval - integer - Não - 1 - intervalo dos números dos segundos do menu dropdown - - - field_array - string - Não - n/a - exibe valores para o array deste nome outputs values to array of this name - - - all_extra - string - Não - null - adiciona atributos - extras para tags select/input se fornecidas - - - hour_extra - string - Não - null - adiciona atributos - extras para tags select/input se fornecidas - - - minute_extra - string - Não - null - adiciona atributos - extras para tags select/input tags se fornecidas - - - second_extra - string - No - null - adiciona atributos - extras para tags select/input se fornecidas - - - meridian_extra - string - Não - null - adiciona atributos - extras para tags select/input se fornecidas - - - - - - html_select_time é uma função cusomizada que cria menus dropdowns de hora para você. Ela pode mostrar - alguns valores, ou tudo de hora, - minuto, segundo e ainda formato am/pm - - -html_select_time - -{html_select_time use_24_hours=true} - - -OUTPUT: - -<select name="Time_Hour"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09" selected>09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -</select> -<select name="Time_Minute"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20" selected>20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23">23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -<option value="32">32</option> -<option value="33">33</option> -<option value="34">34</option> -<option value="35">35</option> -<option value="36">36</option> -<option value="37">37</option> -<option value="38">38</option> -<option value="39">39</option> -<option value="40">40</option> -<option value="41">41</option> -<option value="42">42</option> -<option value="43">43</option> -<option value="44">44</option> -<option value="45">45</option> -<option value="46">46</option> -<option value="47">47</option> -<option value="48">48</option> -<option value="49">49</option> -<option value="50">50</option> -<option value="51">51</option> -<option value="52">52</option> -<option value="53">53</option> -<option value="54">54</option> -<option value="55">55</option> -<option value="56">56</option> -<option value="57">57</option> -<option value="58">58</option> -<option value="59">59</option> -</select> -<select name="Time_Second"> -<option value="00">00</option> -<option value="01">01</option> -<option value="02">02</option> -<option value="03">03</option> -<option value="04">04</option> -<option value="05">05</option> -<option value="06">06</option> -<option value="07">07</option> -<option value="08">08</option> -<option value="09">09</option> -<option value="10">10</option> -<option value="11">11</option> -<option value="12">12</option> -<option value="13">13</option> -<option value="14">14</option> -<option value="15">15</option> -<option value="16">16</option> -<option value="17">17</option> -<option value="18">18</option> -<option value="19">19</option> -<option value="20">20</option> -<option value="21">21</option> -<option value="22">22</option> -<option value="23" selected>23</option> -<option value="24">24</option> -<option value="25">25</option> -<option value="26">26</option> -<option value="27">27</option> -<option value="28">28</option> -<option value="29">29</option> -<option value="30">30</option> -<option value="31">31</option> -<option value="32">32</option> -<option value="33">33</option> -<option value="34">34</option> -<option value="35">35</option> -<option value="36">36</option> -<option value="37">37</option> -<option value="38">38</option> -<option value="39">39</option> -<option value="40">40</option> -<option value="41">41</option> -<option value="42">42</option> -<option value="43">43</option> -<option value="44">44</option> -<option value="45">45</option> -<option value="46">46</option> -<option value="47">47</option> -<option value="48">48</option> -<option value="49">49</option> -<option value="50">50</option> -<option value="51">51</option> -<option value="52">52</option> -<option value="53">53</option> -<option value="54">54</option> -<option value="55">55</option> -<option value="56">56</option> -<option value="57">57</option> -<option value="58">58</option> -<option value="59">59</option> -</select> -<select name="Time_Meridian"> -<option value="am" selected>AM</option> -<option value="pm">PM</option> -</select> - - - - html_table - - - - - - - - - - Nome do atributo - Tipo - Exigido - Padrão - Descrição - - - - - loop - array - Sim - n/a - array de dados para ser feito o loop - - - cols - inteiro - Não - 3 - número de colunas na tabela - - - table_attr - string - Não - border="1" - atributos para a tag table - - - tr_attr - string - Não - empty - atributos para a tag tr (arrays estão em ciclo) - - - td_attr - string - Não - empty - atributos para a tag (arrays estão em ciclo) - - - trailpad - string - Não - &nbsp; - values to pad the trailing cells on last row with - (se algum) - - - - hdir - string - Não - right - direçao de uma linha para ser representada. Possíveis valores: left/right - - - vdir - string - Não - down - direção das colunas para serem representadas. Possíveis valores: up/down - - - - - - html_table é uma função customizada que transforma um array de dados - em uma tabela HTML. O atributo cols determina com quantas colunas estarão - na tabela. Os valores table_attr, tr_attr e - td_attr determinam os atributos dados para a tabela, tags tr e td. Se tr_attr ou - td_attr são arrays, eles entrarão em ciclo. - trailpad é o - alor colocado dentro do trailing - cells na última linha da tabela - se há alguma presente. - - -html_table - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->assign('data',array(1,2,3,4,5,6,7,8,9)); -$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"')); -$smarty->display('index.tpl'); - -index.tpl: - -{html_table loop=$data} -{html_table loop=$data cols=4 table_attr='border="0"'} -{html_table loop=$data cols=4 tr_attr=$tr} - -MOSTRA: - -<table border="1"> -<tr><td>1</td><td>2</td><td>3</td></tr> -<tr><td>4</td><td>5</td><td>6</td></tr> -<tr><td>7</td><td>8</td><td>9</td></tr> -</table> -<table border="0"> -<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> -<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> -<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> -</table> -<table border="1"> -<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr> -<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr> -<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> -</table> - - - - math - - - - - - - - - - Nome do atributo - Tipo - Exigido - Padrão - Descrição - - - - - equation - string - Sim - n/a - a equação para executar - - - format - string - Não - n/a - o formato do resultado (sprintf) - - - var - numérico - Sim - n/a - valor da variável da equação - - - assign - string - Não - n/a - variável de template cuja saída será atribuida - - - [var ...] - numérica - Sim - n/a - valor da variável da equação - - - - - - math permite o desenhista de template fazer equações matemáticas no template. - Qualquer variável de template numérica pode ser usada nas equações, e o resultado - é exibido no lugar da tag. As variáveis usadas na equação são passadas como parâmetros, - que podem ser variáveis de template - ou valores estáticos. +, -, /, *, abs, ceil, cos, - exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, - srans and tan são todos os operadores válidos. Verifique a documentação do PHP para - mais informações acerca destas funções matemáticas. - - - Se você fornece o atributo especial "assign", a saída da função matemática será - atribuído para esta variável - de template ao invés de ser exibida para o template. - - - Nota Técnica - - math é uma função de performance cara devido ao uso da função do php eval(). - Fazendo a matemática no PHP é muito mais eficiente, então sempre é possível fazer - os cálculos matemáticos no PHP e lançar os resultados para o template. Definitivamente - evite chamadas de funções de - matemáticas repetitivamente, como dentro de loops de section. - - - -math - -{* $height=4, $width=5 *} - -{math equation="x + y" x=$height y=$width} - -OUTPUT: - -9 - - -{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *} - -{math equation="height * width / division" - height=$row_height - width=$row_width - division=#col_div#} - -OUTPUT: - -100 - - -{* Você pode usar parenteses *} - -{math equation="(( x + y ) / z )" x=2 y=10 z=2} - -OUTPUT: - -6 - - -{* você pode fornecer um parâmetro de formato em sprintf *} - -{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"} - -OUTPUT: - -9.44 - - - - mailto - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - address - string - Sim - n/a - O endereço de email - - - text - string - Não - n/a - O texto para mostrar, o padrão - é o endereço de email - - - encode - string - Não - none - Como codificar o e-mail. - Pode ser none, - hex ou javascript. - - - cc - string - Não - n/a - Endereço de e-mail para mandar uma cópia carbono(cc). - Separe os endereços por vírgula. - - - bcc - string - Não - n/a - Endereço de e-mail para mandar uma cópia carbono cega(bcc). - Separe os endereços por vírgula. - - - subject - string - Não - n/a - Assunto do e-mail. - - - newsgroups - string - Não - n/a - newsgroup para postar. - Separe os endereços por vírgula. - - - followupto - string - Não - n/a - Endereço para acompanhar. - Separe os endereços por vírgula. - - - extra - string - Não - n/a - Qualquer outra informação que você - queira passar para o link, como - classes de planilhas de estilo - - - - - - mailto automatiza o processo de criação de links de e-mail e opcionalmente - codifica eles. Codificar e-mail torna mais difícil para - web spiders pegarem endereços no seu site. - - - Nota Técnica - - javascript é provavelmente o meio de codificação mais - utilizado, entretanto você pode usar codificação hexadecimal também. - - - -mailto - -{mailto address="me@domain.com"} -{mailto address="me@domain.com" text="send me some mail"} -{mailto address="me@domain.com" encode="javascript"} -{mailto address="me@domain.com" encode="hex"} -{mailto address="me@domain.com" subject="Hello to you!"} -{mailto address="me@domain.com" cc="you@domain.com,they@domain.com"} -{mailto address="me@domain.com" extra='class="email"'} - -MOSTRA: - -<a href="mailto:me@domain.com" >me@domain.com</a> -<a href="mailto:me@domain.com" >send me some mail</a> -<SCRIPT language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%6 -9%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d% -61%69%6e%2e%63%6f%6d%22%20%3e%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%3c%2f%61%3e -%27%29%3b'))</SCRIPT> -<a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d" >&#x6d;&#x65;&#x40;&#x64;& -#x6f;&#x6d;&#x61;&#x69;&#x6e;&#x2e;&#x63;&#x6f;&#x6d;</a> -<a href="mailto:me@domain.com?subject=Hello%20to%20you%21" >me@domain.com</a> -<a href="mailto:me@domain.com?cc=you@domain.com%2Cthey@domain.com" >me@domain.com</a> -<a href="mailto:me@domain.com" class="email">me@domain.com</a> - - - - popup_init - - popup é uma integração com overLib, uma biblioteca usada para janelas - popup. Esta é usada para informações sensíveis ao contexto, como - janelas de ajuda ou dicas. popup_init deve ser usada uma vez ao - topo de cada página que você planeje usar a função popup. overLib - foi escrita por Erik Bosrup, e a página esta localizada em - http://www.bosrup.com/web/overlib/. - - - A partir da versão 2.1.2 do Smarty, overLib NÃO vem com a distribuição. - Baixe o overLib, coloque o arquivo overlib.js dentro da sua arvore de - documentos e indique o caminho relativo para o parâmetro "src" - de popup_init. - - -popup_init - -{* popup_init deve ser utilizada uma vez no topo da página *} -{popup_init src="/javascripts/overlib.js"} - - - - popup - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - text - string - Sim - n/a - O text/html para mostrar na janela popup - - - trigger - string - Não - onMouseOver - O que é usado para fazer a janela aparecer. Pode ser - onMouseOver ou onClick - - - sticky - boolean - Não - false - Faz a janela colar até que seja fechada - - - caption - string - Não - n/a - Define o texto para o título - - - fgcolor - string - Não - n/a - A cor usada dentro da caixa popup - - - bgcolor - string - Não - n/a - A cor da borda da caixa popup - - - textcolor - string - Não - n/a - Define a cor do texto dentro da caixa popup - - - capcolor - string - Não - n/a - Define a cor do título da caixa - - - closecolor - string - Não - n/a - Define a cor do texto para fechar - - - textfont - string - Não - n/a - Define a cor do texto para ser usado no texto principal - - - captionfont - string - Não - n/a - Define a fonte para ser usada no Título - - - closefont - string - Não - n/a - Define a fonte para o texto "Close" - - - textsize - string - Não - n/a - Define a fonte do texto principa - - - captionsize - string - Não - n/a - Define o tamanho da fonte do título - - - closesize - string - Não - n/a - Define o tamanho da fonte do texto "Close" - - - width - integer - Não - n/a - Define a largura da caixa - - - height - integer - Não - n/a - Define a altura da caixa - - - left - boolean - Não - false - Faz os popups irem para a esquerda do mouse - - - right - boolean - Não - false - Faz os popups ir para a diresita do mouse - - - center - boolean - Não - false - Faz os popups ir para o centro do mouse - - - above - boolean - Não - false - Faz os popups irem para acima do mouse. NOTA: somente - possível se height foi definido - - - below - boolean - Não - false - Faz os popups irem abaixo do mouse - - - border - integer - Não - n/a - Torna as bordas dos popups grossas ou finas - - - offsetx - integer - Não - n/a - A que distancia do mouse o popup irá - aparecer, horizontalmente - - - offsety - integer - Não - n/a - A que distancia do mouse o popup irá - aparecer, verticalmente - - - fgbackground - url para imagem - Não - n/a - Define uma imagem para usar ao invés de uma - cor dentro do popup. - - - bgbackground - url to image - Não - n/a - define uma imagem para ser usada como borda - ao invés de uma cor para o popup. Nota: você deve definir bgcolor - como "" ou a cor irá aparecer também. NOTA: quando tiver um - link "Close", o Netscape irá redesenhar as células da tabela, - fazendo as coisas aparecerem incorretamente - - - closetext - string - Não - n/a - Define o texto "Close" para qualquer outra coisa - - - noclose - boolean - Não - n/a - Não mostra o texto "Close" em coladas - com um título - - - status - string - Não - n/a - Define o texto na barra de status do browser - - - autostatus - boolean - Não - n/a - Define o texto da barra de status para o texto do popup. - NOTA: sobrescreve a definição de status - - - autostatuscap - string - Não - n/a - define o texto da barra de status como o texto do título - NOTA: sobrescreve o status e autostatus - - - inarray - integer - Não - n/a - Indica ao overLib para ler o texto deste índice - na matriz ol_text array, localizada em overlib.js. Este - parâmetro pode ser usado ao invés do texto - - - caparray - integer - Não - n/a - diz para overLib ler o título a partir deste índice - na matriz ol_caps - - - capicon - url - Não - n/a - Mostra a imagem antes do título - - - snapx - integer - Não - n/a - snaps the popup to an even position in a - horizontal grid - - - snapy - integer - Não - n/a - snaps the popup to an even position in a - vertical grid - - - fixx - integer - No - n/a - locks the popups horizontal position Note: - overrides all other horizontal placement - - - fixy - integer - No - n/a - locks the popups vertical position Note: - overrides all other vertical placement - - - background - url - Não - n/a - Define uma imagem para ser usada como - fundo ao invés da tabela - - - padx - integer,integer - Não - n/a - Prenche a imagem de fundo com espaços em branco horizontal - para colocação do texto. Nota: este é um comando - de dois parâmetros - - - pady - integer,integer - Não - n/a - Prenche a imagem de fundo com espaços em branco vertical - para colocação do texto. Nota: este é um comando - de dois parâmetros - - - fullhtml - boolean - Não - n/a - Permite a você controlar o html sobre a figura - de fundo completamente. O código HTML é esperado - no atributo "text" - - - frame - string - Não - n/a - Controla popups em frames diferentes. Veja a página da - overlib para maiores informações sobre esta função - - - timeout - string - Não - n/a - Utiliza uma função e pega o valor de retorno - como texto que deva ser mostrado - na janela popup - - - delay - integer - Não - n/a - Faz com que o popup funcione como um tooltip. Irá - aparecer apenas após um certo atraso em milésimos de segundo - - - hauto - boolean - Não - n/a - Determina automaticamente se o popup deve aparecer - a esquerda ou direita do mouse. - - - vauto - boolean - Não - n/a - Determina automaticamente se o popup deve aparecer - abaixo ou acima do mouse. - - - - - - popup é usado para criar janelas popup com javascript. - - -popup - -{* popup_init deve ser utilizada uma vez no topo da página *} -{popup_init src="/javascripts/overlib.js"} - -{* cria um link com uma janela popup que aparece quando se passa o mouse sobre ele *} -<A href="mypage.html" {popup text="This link takes you to my page!"}>mypage</A> - -{* você pode usar html, links, etc no texto do popup *} -<A href="mypage.html" {popup sticky=true caption="mypage contents" -text="<UL><LI>links<LI>pages<LI>images</UL>" snapx=10 snapy=10}>mypage</A> - - - - textformat - - - - - - - - - - Nome do Atributo - Tipo - Requerido - Padrão - Descrição - - - - - style - string - Não - n/a - estilo pré-definido - - - indent - number - Não - 0 - O número de caracteres para endentar cada linha. - - - indent_first - number - Não - 0 - O número de caracteres para endentar a primeira linha - - - indent_char - string - Não - (single space) - O caractere (ou string de caracteres) para indenta - - - wrap - number - Não - 80 - Em quantos caracteres quebrar cada linha - - - wrap_char - string - Não - \n - O caractere (ou string de caracteres) para usar - para quebrar cada linha - - - wrap_cut - boolean - Não - false - Se true, wrap irá quebrar a linha no caractere - exato em vez de quebrar ao final da palavra - - - assign - string - No - n/a - A variável de template que irá - receber a saída - - - - - - textformat é uma função de bloco usada para formatar texto. Basicamente - limpa espaços e caracteres especiais, e formata os paragrafos - quebrando o texto ao final de palavras e identando linhas. - - - Você pode definir os parâmetros explicitamente, ou usar um estilo pré-definido. - Atualmente o único estilo disponível é "email". - - -textformat - -{textformat wrap=40} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -MOSTRA: - -This is foo. This is foo. This is foo. -This is foo. This is foo. This is foo. - -This is bar. - -bar foo bar foo foo. bar foo bar foo -foo. bar foo bar foo foo. bar foo bar -foo foo. bar foo bar foo foo. bar foo -bar foo foo. bar foo bar foo foo. - - -{textformat wrap=40 indent=4} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -MOSTRA: - - This is foo. This is foo. This is - foo. This is foo. This is foo. This - is foo. - - This is bar. - - bar foo bar foo foo. bar foo bar foo - foo. bar foo bar foo foo. bar foo - bar foo foo. bar foo bar foo foo. - bar foo bar foo foo. bar foo bar - foo foo. - -{textformat wrap=40 indent=4 indent_first=4} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -MOSTRA: - - This is foo. This is foo. This - is foo. This is foo. This is foo. - This is foo. - - This is bar. - - bar foo bar foo foo. bar foo bar - foo foo. bar foo bar foo foo. bar - foo bar foo foo. bar foo bar foo - foo. bar foo bar foo foo. bar foo - bar foo foo. - -{textformat style="email"} - -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. -This is foo. - -This is bar. - -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. -bar foo bar foo foo. - -{/textformat} - -MOSTRA: - -This is foo. This is foo. This is foo. This is foo. This is foo. This is -foo. - -This is bar. - -bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo -bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo -foo. - - - - - - - - Arquivos de Configuração - - 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. - - - Examplo de sintaxe de um arquivo de configuração - -# global variables -pageTitle = "Main Menu" -bodyBgColor = #000000 -tableBgColor = #000000 -rowBgColor = #00ff00 - -[Customer] -pageTitle = "Customer Info" - -[Login] -pageTitle = "Login" -focus = "username" -Intro = """este é um valor - que se divide m mais de uma linha. deve - estar dentro de três aspas.""" - -# hidden section -[.Database] -host=my.domain.com -db=ADDRESSBOOK -user=php-user -pass=foobar - - - 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 # - (cancela) no ínicio de cada linha. - - - 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 - [ ou ]. 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. - - - Arquivos de configuração são carregados no template com a função embutida - config_load. - - - 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. - - - - - Debugging Console - - 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 {debug}. - 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 $debugging_ctrl. - - - Nota Técnica - - 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. - - - - - Os tempos de carregamento de cada template e arquivo de cofiguração são em segundos, - ou então frações. - - - - diff --git a/docs/pt_BR/getting-started.sgml b/docs/pt_BR/getting-started.xml similarity index 100% rename from docs/pt_BR/getting-started.sgml rename to docs/pt_BR/getting-started.xml diff --git a/docs/pt_BR/html-common.dsl b/docs/pt_BR/html-common.dsl deleted file mode 100644 index 7fd772c5..00000000 --- a/docs/pt_BR/html-common.dsl +++ /dev/null @@ -1,382 +0,0 @@ -;; -*- Scheme -*- -;; -;; $Id$ -;; - -;; Returns the depth of the auto-generated TOC (table of contents) that -;; should be made at the nd-level -(define (toc-depth nd) - (if (string=? (gi nd) (normalize "book")) - 3 ; the depth of the top-level TOC - 1 ; the depth of all other TOCs - )) - - - - - - -(element (funcdef function) - ($bold-seq$ - (make sequence - (process-children) - ) - ) - ) - - -(define (is-true-optional nl) - (and (equal? (gi (parent nl)) (normalize "parameter")) - (equal? 0 (string-length (strip (data (preced nl))))) - (equal? 0 (string-length (strip (data (follow nl))))) - ) - ) - - -(define (has-true-optional nl) - (is-true-optional - (node-list-first-element - (select-elements - (descendants nl) - (normalize "optional")) - ) - ) - ) - - -(define (count-true-optionals nl) - (let loop - ((result 0) - (nl (select-elements (descendants nl) (normalize "optional"))) - ) - (if(node-list-empty? nl) - result - (if(is-true-optional(node-list-first nl)) - (loop (+ result 1) (node-list-rest nl)) - (loop result (node-list-rest nl)) - ) - ) - ) - ) - - -;; there are two different kinds of optionals -;; optional parameters and optional parameter parts -;; an optional parameter is identified by an optional tag -;; with a parameter tag as its parent -;; and only whitespace between them -(element optional - ;;check for true optional parameter - (if (is-true-optional (current-node)) - ;; yes - handle '[...]' in paramdef - (process-children-trim) - ;; no - do '[...]' output - (make sequence - (literal %arg-choice-opt-open-str%) - (process-children-trim) - (literal %arg-choice-opt-close-str%) - ) - ) - ) - -;; now this is going to be tricky -(element paramdef - (make sequence - ;; special treatment for first parameter in funcsynopsis - (if (equal? (child-number (current-node)) 1) - ;; is first ? - (make sequence - ;; start parameter list - (literal "(") - ;; is optional ? - ( if (has-true-optional (current-node)) - (literal %arg-choice-opt-open-str%) - (empty-sosofo) - ) - ) - ;; not first - (empty-sosofo) - ) - - ;; - (process-children-trim) - - ;; special treatment for last parameter - (if (equal? (gi (ifollow (current-node))) (normalize "paramdef")) - ;; more parameters will follow - (make sequence - ;; next is optional ? - ( if (has-true-optional (ifollow (current-node))) - ;; optional - (make sequence - (literal " ") - (literal %arg-choice-opt-open-str%) - ) - ;; not optional - (empty-sosofo) - ) - (literal ", " ) - ) - ;; last parameter - (make sequence - (literal - (let loop ((result "")(count (count-true-optionals (parent (current-node))))) - (if (<= count 0) - result - (loop (string-append result %arg-choice-opt-close-str%)(- count 1)) - ) - ) - ) - ( literal ")" ) - ) - ) - ) - ) - - -(element function - (let* ((function-name (data (current-node))) - (linkend - (string-append - "function." - (string-replace - (string-replace function-name "_" "-") - "::" "."))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in FUNCDEF - ((equal? parent-gi "funcdef") - (process-children)) - - ;; if a valid ID for the target function is not found, or if the - ;; FUNCTION tag is within the definition of the same function, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - function-name)) - ($bold-seq$ - (make sequence - (process-children) - (literal "()")))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (make sequence - (process-children) - (literal - ) - (literal "()")))))))) - -(element command - (let* ((command-name (data (current-node))) - (linkend - (string-append - "language.function." - (string-replace - (string-replace command-name "_" ".") - "::" "."))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in FUNCDEF - ((equal? parent-gi "funcdef") - (process-children)) - - ;; if a valid ID for the target function is not found, or if the - ;; FUNCTION tag is within the definition of the same function, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - command-name)) - ($bold-seq$ - (make sequence - (literal "{") - (process-children) - (literal "}")))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (make sequence - (literal "{") - (process-children) - (literal "}")))))))) - -(element classname - (let* ((class-name (data (current-node))) - (linkend - (string-append - "class." - (string-replace - (case-fold-down class-name) "_" "-"))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond - ;; function names should be plain in SYNOPSIS - ((equal? parent-gi "synopsis") - (process-children)) - - ;; if a valid ID for the target class is not found, or if the - ;; CLASSNAME tag is within the definition of the same class, - ;; make it bold, but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - class-name)) - ($bold-seq$ - (process-children))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-seq$ - (process-children))))))) - - -(element constant - (let* ((constant-name (data (current-node))) - (linkend - (string-append "constant." - (case-fold-down - (string-replace constant-name "_" "-")))) - (target (element-with-id linkend)) - (parent-gi (gi (parent)))) - (cond -; ;; constant names should be plain in FUNCDEF -; ((equal? parent-gi "funcdef") -; (process-children)) - - ;; if a valid ID for the target constant is not found, or if the - ;; CONSTANT tag is within the definition of the same constant, - ;; make it bold, add (), but don't make a link - ((or (node-list-empty? target) - (equal? (case-fold-down - (data (node-list-first - (select-elements - (node-list-first - (children - (select-elements - (children - (ancestor-member (parent) (list "refentry"))) - "refnamediv"))) - "refname")))) - constant-name)) - ($bold-mono-seq$ - (process-children))) - - ;; else make a link to the function and add () - (else - (make element gi: "A" - attributes: (list - (list "HREF" (href-to target))) - ($bold-mono-seq$ - (process-children))))))) - - -(element example - (make sequence - (make element gi: "TABLE" - attributes: (list - (list "WIDTH" "100%") - (list "BORDER" "0") - (list "CELLPADDING" "0") - (list "CELLSPACING" "0") - (list "CLASS" "EXAMPLE")) - (make element gi: "TR" - (make element gi: "TD" - ($formal-object$)))))) - - -(element (paramdef parameter) - (make sequence - font-posture: 'italic - (process-children-trim) - ) - ) - -(mode book-titlepage-recto-mode - (element authorgroup - (process-children)) - - (element author - (let ((author-name (author-string)) - (author-affil (select-elements (children (current-node)) - (normalize "affiliation")))) - (make sequence - (make element gi: "DIV" - attributes: (list (list "CLASS" (gi))) - (literal author-name)) - (process-node-list author-affil)))) - ) - -(define (chunk-element-list) - (list (normalize "preface") - (normalize "chapter") - (normalize "appendix") - (normalize "article") - (normalize "glossary") - (normalize "bibliography") - (normalize "index") - (normalize "colophon") - (normalize "setindex") - (normalize "reference") - (normalize "refentry") - (normalize "part") - (normalize "sect1") - (normalize "sect2") - (normalize "section") - (normalize "book") ;; just in case nothing else matches... - (normalize "set") ;; sets are definitely chunks... - )) - -(define ($section-body$) - (make element gi: "DIV" - attributes: (list (list "CLASS" (gi))) - ($section-separator$) - ($section-title$) - - (if (or (not (node-list-empty? (select-elements (children (current-node)) - (normalize "sect2")))) - (not (node-list-empty? (select-elements (children (current-node)) - (normalize "sect3"))))) - (build-toc (current-node) 1) - (empty-sosofo)) - - (process-children))) - diff --git a/docs/pt_BR/language-defs.ent b/docs/pt_BR/language-defs.ent new file mode 100644 index 00000000..7aab73d4 --- /dev/null +++ b/docs/pt_BR/language-defs.ent @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/pt_BR/manual.xml b/docs/pt_BR/manual.xml new file mode 100644 index 00000000..753ba938 --- /dev/null +++ b/docs/pt_BR/manual.xml @@ -0,0 +1,45 @@ + + + + + +]> + + + + Smarty - a ferramenta para compilar templates para PHP + + + MonteOhrt <monte@ispi.net> + + + AndreiZmievski <andrei@php.net> + + + + + FernandoCorrea da Conceição <fernandoc@php.net> + + + MarceloPerreira Fonseca da Silva <marcelo@php.net> + + + TanielFranklin <taniel@ig.com.br> + + Versão 2.0 + + 2001 + 2002 + 2003 + ispi of Lincoln, Inc. + + + + &preface; + &getting.started; + &smarty.for.designers; + &smarty.for.programmers; + &appendixes; + + diff --git a/docs/pt_BR/preface.sgml b/docs/pt_BR/preface.xml similarity index 100% rename from docs/pt_BR/preface.sgml rename to docs/pt_BR/preface.xml diff --git a/docs/pt_BR/programmers.sgml b/docs/pt_BR/programmers.sgml deleted file mode 100644 index d47be7ee..00000000 --- a/docs/pt_BR/programmers.sgml +++ /dev/null @@ -1,3275 +0,0 @@ - - Smarty para Programadores - - - - Constantes - - - - SMARTY_DIR - - Isso deve ser o caminho completo do path para a localização dos arquivos de classe da Smarty. - Se isso não for definido, então a Smarty irá tentar determinar - o valor apropriado automaticamente. Se definido, o path - deve finalizar com uma barra. - - - SMARTY_DIR - -// set path to Smarty directory -define("SMARTY_DIR","/usr/local/lib/php/Smarty/"); - -require_once(SMARTY_DIR."Smarty.class.php"); - - - - - - Variáveis - - - $template_dir - - Este é o nome padrão do diretório de template. Se você não fornecer - um tipo de recurso quando incluir arquivos, então ele irá ser encontrado aqui. - Por padrão isso é "./templates", significando que isso irá - olhar para o diretório de templates no mesmo diretório que está executando - o script PHP. - - - Notas Técnicas - - Não é recomendado colocar este diretório sob um diretório - document root do seu webserver. - - - - - $compile_dir - - Esse é o nome do diretório onde os template compilados estão localizados - Por padrão isso é "./templates_c", significando que isso irá - olhar para o diretório de templates no mesmo diretório que está executando - o script PHP. - - - Notas Técnicas - - Essa configuração deve ser um path relativo ou um path absoluto. - include_path não é usado para escrever em arquivos. - - - - Notas Técnicas - - Não é recomendado colocar este diretório sob um diretório - document root do seu webserver. - - - - - $config_dir - - Este é o diretório usado para armazenar arquivos de configuração usados nos - templates. O padrão é "./configs", significando que isso irá - olhar para o diretório de templates no mesmo diretório que está executando - o script PHP. - - - Notas Técnicas - - Não é recomendado colocar este diretório sob um diretório - document root do seu webserver. - - - - - $plugins_dir - - Esse é o diretório onde Smarty irá procurar por plugins que são necessários. - O Padrão é "plugins" sob o SMARTY_DIR. Se vocêes especificar um - path relativo, Smarty irá primeiro procurar sob o SMARTY_DIR, então - relativo para o cwd (current working directory), então relativo para cada - entrada no seu PHP include path. - - - Notas técnicas - - Para uma melhor performance, não configure seu plugins_dir para ter que usar o - PHP include path. Use um path absoluto, ou um path relativo para - SMARTY_DIR ou o cwd. - - - - - $debugging - - Isso habilita o debugging console. - O console é uma janela de javascript que informa à você - sobre os arquivos de template incluídos e variáveis - destinadas para a página de template atual. - - - - $debug_tpl - - Este é o nome do arquivo de template usado para o console de debug. - Por padrão, é nomeado como debug.tpl e está localizado no SMARTY_DIR. - - - - $debugging_ctrl - - Isso permite caminhos alternativos de habilitar o debug. NONE não significa - que métodos alternativos são permitidos. URL significa quando a palavra - SMARTY_DEBUG foi encontrado na QUERY_STRING, que o debug está habilitado - para a chamada do script. - Se $debugging é true, esse valor é ignorado. - - - - $global_assign - - Essa é a lista de variáveis que estão sempre implicitamente fixadas - para o template engine. Isso está acessível para fazer variáveis - globais ou variáveis do servidor disponíveis para todo o template - sem ter que fixá-las manualmente. Cada elemento em - $global_assign deve ser um nome de uma variável global, - ou um par de chave/valor, onde a chave é o nome do array global - array e o valor é o array de variáveis fixadas deste array global. $SCRIPT_NAME é - globalmente fixado por padrão - para $HTTP_SERVER_VARS. - - - Notas Técnicas - - Variáveis de servidor podem ser acessadas através da variável - $smarty, como {$smarty.server.SCRIPT_NAME}. Veja a seção - da variável - $smarty. - - - - - $undefined - - Isso seta o valor de $undefined para Smarty, o padrão é null. - Atualmente isso é somente usado para setar variáveis indefinidas em - $global_assign para o valor padrão. - - - - $autoload_filters - - Se há algum filtro que você deseja carregar em cada chamada de template, - você pode especificar-lhes usando essa variável e a Smarty irá - automaticamente carregá-los para você. A variável é um array associativo - onde as chaves são tipos de filtro e os valores são arrays de nomes de filtros. - Por exemplo: - - -$smarty->autoload_filters = array('pre' => array('trim', 'stamp'), - 'output' => array('convert')); - - - - - - $compile_check - - Em cima de cada requisição da aplicação PHP , Smarty testa para ver se o - template atual foi alterado (diferentes time stamp) desde a última - compilação. Se isso foi alterado, ele irá recompilar o template. Se o template - não foi compilado, ele irá compilar de qualquer maneira dessa configuração. - Por padrão esta variável é setada como true. Uma vez que a aplicação está - em produção (templates não serão alterados), o passo compile_check - não é necessário. Tenha certeza de setar $compile_check para "false" para - maior performance. Note que se você alterar isso para "false" e o - arquivo de template está alterado, você *não* irá ver a alteração desde que - o template seja recompilado. Se caching está habilitado e - compile_check está habilitado, então os arquivos de cache não serão regerados se - um complexo arquivo de ou um arquivo de configuração foi atualizado. Veja $force_compile ou clear_compiled_tpl. - - - - $force_compile - - Isso força Smarty para (re)compilar templates a cada requisição. - Essa configuração sobreescreve $compile_check. Por padrão - isso está desabilitado. Isso é útil para desenvolvimento e debug. - Isso nunca deve ser usado em ambiente de produção. Se caching - está habilitado, os arquivo(s) de cache serão regerados à todo momento. - - - - $caching - - Isto diz à Smarty se há ou não saída de cache para o template. - Por padrão isso está setado para 0, ou desabilitado. Se seu template gerar - conteúdo redundante, é necessário ligar o caching. Isso - irá resultar num ganho significativo de performance. Você pode também ter múltiplos - caches para o mesmo template. Um valor de 1 ou 2 caching habilitados. 1 diz - à Smarty para usar a variável atual $cache_lifetime para determinar se o - cache expirou. Um valor 2 diz à Smarty para usar o valor cache_lifetime - então para quando o cache foi gerado. Desta maneira você pode setar o - cache_lifetime imediatamente antes de buscar o template para ter controle - sobre quando este cache em particular expira. Veja também is_cached. - - - Se $compile_check está habilitado, o conteúdo do cache irá ser regerado se - algum dos templates ou arquivos de configuração que são parte deste cache estiverem - alterados. Se $force_compile está habilitado, o conteúdo do cache irá sempre ser - regerado. - - - - $cache_dir - - Isso é o nome do diretório onde os caches do template são - armazenados. Por padrão isso é "./cache", significando que isso irá olhar - para o diretório de cache no mesmo diretório que executar scripts PHP. - Você pode tambe usar sua própria função customizada de manuseamento de cache - para manipular arquivos de cache, - que irão ignorar esta configuração. - - - Notas Técnicas - - Essa configuração deve ser ou um relativo - ou absoluto path. include_path não é usado para escrever em arquivos. - - - - Notas Técnicas - - Não é recomendado colocar este diretório sob um diretório - document root do seu webserver. - - - - - $cache_lifetime - - Isso é o comprimento de tempo em segundos que um cache de template é válido. - Uma vez que este tempo está expirado, o cache irá ser regerado. $caching deve - ser configurado para "true" para $cache_lifetime para ter algum propósito. Um valor de -1 - irá forçar o cache a nunca expirar. Um valor de 0 irá fazer com que o cache seja sempre regerado - (bom somente para testes, o método mais eficiente de desabilitar caching é setá-lo para - $caching = false.) - - - Se $force_compile está - habilitado, os arquivos de cache serão regerados todo o tempo, eficazmente - desativando caching. Você pode limpar todos os arquivos de cache com a função clear_all_cache(), ou - arquivos individuais de cache (ou grupos) com a função clear_cache(). - - - Notas Técnicas - - Se você quiser dar para certos templates seu próprio tempo de vida de um cache, - você poderia fazer isso configurando $caching = 2, - então configure $cache_lifetime para um único valor somente antes de chamar display() - ou fetch(). - - - - - $cache_handler_func - - Você pode fornecer uma função padrão para manipular arquivos de cache ao invés de - usar o método built-in usando o $cache_dir. Veja a - seção cache - handler function section para obter detalhes. - - - - $cache_modified_check - - Se configurado para true, Smarty irá respeitar o If-Modified-Since - header enviado para o cliente. Se o timestamp do arquivo de cache - não foi alterado desde a última visita, então um header "304 Not Modified" - irá ser enviado ao invés do conteúdo. Isso funciona somente em arquivos - de cache sem tags insert. - - - - $config_overwrite - - Se configurado para true, variáveis lidas no arquivo de configurações irão sobrescrever - uma a outra. Do contrário, as variáveis serão guardadas em um array. Isso é - útil se você quer armazenar arrays de dados em arquivos de configuração, somente lista - tempos de cada elemento múltiplo. true por padrão. - - - - $config_booleanize - - Se setado para true, os valores do arquivo de configuração de on/true/yes e off/false/no - ficará convertido para valores booleanos automaticamente. Desta forma você pode usar os - valores em um template como: {if #foobar#} ... {/if}. Se foobar estiver - on, true ou yes, a condição {if} irá executar. true por padrão. - - - - $config_read_hidden - - Se configurado para true, esconde seções (nomes de seções começados com um período) - no arquivo de configuração podem ser lidos do template. Tipicamente você deixaria - isto como false, desta forma você pode armazenar dados sensitivos no arquivo de configuração - como um parâmetro de banco de - dados e sem preocupar-se sobre o template carregá-los. false é o padrão. - - - - $config_fix_newlines - - Se setado para true, mac e dos newlines (\r e \r\n) no arquivo de configuração serão - convertidos para \n quando eles forem interpretados. true é o padrão. - - - - $default_template_handler_func - - Essa função é chamada quando um template não pode ser obtido - de seu recurso. - - - - $php_handling - - Isso diz à Smarty como manipular códigos PHP contido nos - templates. Há quatro possíveis configurações, padrão sendo - SMARTY_PHP_PASSTHRU. Note que isso NÃO fará efeito com códigos php - dentro de tags {php}{/php} - no template. - - - SMARTY_PHP_PASSTHRU - Smarty echos tags as-is. - SMARTY_PHP_QUOTE - Smarty quotes the - tags as html entities. - SMARTY_PHP_REMOVE - Smarty - irá remover as tags do template. - SMARTY_PHP_ALLOW - Smarty irá executar as - tags como códigos PHP. - - - NOTE: Usando códigos PHP code dentro de templates é altamente desencorajado. - Use custom functions ou - modifiers ao invés disso. - - - - $security - - $security true/false, o padrão é false. Security é bom para situações - quando você tem partes inconfiáveis editando o template - (via ftp por exemplo) e você quer reduzir os riscos de comprometimento - da segurança do sistema através da linguagem de template. - Habilitando-o faz-se cumprir as regras da linguagem de template, - a menos que especificamente cancelada com $security_settings: - - - Se $php_handling está setado para SMARTY_PHP_ALLOW, isso é implicitamente - alterado para SMARTY_PHP_PASSTHRU - Funçõs PHP não são permitidas em blocos IF, - exceto estes especificados no $security_settings - templates podem ser somente incluidos no diretório - listado em $secure_dir array - Arquivos locais podem ser somente trazidos do diretório - listado em $secure_dir usando no array {fetch} - Estas tags {php}{/php} não são permitidas - Funções PHP não são permitidas como modificadores, exceto - estes especificados no $security_settings - - - - $secure_dir - - Isso é um array de todos os diretórios locais que são considerados - seguros. {include} e {fetch} usam estes (diretórios) quando security está habilitado. - - - - $security_settings - - Essas configurações são usadas para cancelar ou especificar configurações - de segurança quando security está habilitado. Estas possuem as seguintes configurações possíveis: - - - PHP_HANDLING - true/false. Se setado para true, - a configuração de $php_handling não é checada para security. - IF_FUNCS - Isso é um array de nomes de funções PHP permitidas - nos blocos IF. - INCLUDE_ANY - true/false. Se setado para true, algum - template pode ser incluído para um arquivo do sistema, apesar de toda a lista de - $secure_dir. - PHP_TAGS - true/false. Se setado para true, as tags {php}{/php} - são permitidas nos templates. - MODIFIER_FUNCS - Isso é um array de nomes de funções PHP permitidas - usadas como modificadores de variável. - - - - $trusted_dir - - $trusted_dir somente usado quando $security está habilitado. Isso é um array - de todos os diretórios que são considerados confiáveis. Diretórios confiáveis - são onde você irá deixar seus scripts php que são executados diretamente para o - template com {include_php}. - - - - $left_delimiter - - Este é o delimitador esquerdo usado para a linguagem de template. - O padrão é "{". - - - - $right_delimiter - - Este é o delimitador direito usado para a linguagem de template. - O padrão é "}". - - - - $compiler_class - - Especifica o nome do compilador de classes que - Smarty irá usar para compilar templates. O padrão é 'Smarty_Compiler'. - Para usuários avançados somente. - - - - $request_vars_order - - A ordem na qual as variáveis requeridas serão registradas, similar ao - variables_order no php.ini - - - - $request_use_auto_globals - - Especifica se a Smarty deve usar variáveis globais do php $HTTP_*_VARS[] - ($request_use_auto_globals=false que é o valor padrão) ou - $_*[] ($request_use_auto_globals=true). Isso afeta templates - que fazem uso do {$smarty.request.*}, {$smarty.get.*} etc. . - Atenção: Se você setar $request_use_auto_globals para true, variable.request.vars.order - não terão efeito mas valores de configurações do php - gpc_order são usados. - - - - $compile_id - - Identificador de compilação persistente. Como uma alternativa - para passar o mesmo compile_id para cada chamada de função, você - pode setar este compile_id e isso irá ser usado implicitamente após isso. - - - - $use_sub_dirs - - Configure isso para false se seu ambiente de PHP não permite a criação de - subdiretórios pela Smarty. Subdiretórios são muito eficientes, então use-os se você - conseguir. - - - - $default_modifiers - - Isso é um array de modificadores implicitamente aplicados par cada - variável no template. Por Exemplo, para cada variável HTML-escape por padrão, - use o array('escape:"htmlall"'); Para fazer a variável isenta para modificadores - padrão, passe o modificador especial "smarty" com um valor de parâmetro "nodefaults" - modificando isso, como - {$var|smarty:nodefaults}. - - - - $default_resource_type - - Isso diz à Smarty qual tipo de recurso usar implicitamente. - O valor padrão é 'file', significando que $smarty->display('index.tpl'); e - $smarty->display('file:index.tpl'); são idênticos no significado. - Veja o capítulo resource para detalhes. - - - - - - Métodos - - append - - - void append - mixed var - - - void append - string varname - mixed var - - - void append - string varname - mixed var - boolean merge - - - - Isso é usado para adicionar um elemento para um array fixado. Se você adicionar - uma string como valor, isso irá converter-se para um valor de array e então adicioná-lo. - Você pode explicitamente passar pares nomes/valores, ou arrays associativos - contendo o par nome/valor. Se você passar o terceiro parâmetro opcional para true, - o valor unir-se ao array atual - ao invés de ser adicionado. - - - Notas Técnicas - - O parâmetro de união respeita a chave do array, então se você - mesclar dois índices númericos de um array, eles devem sobrescrever-se - um ao outro ou em resultados não sequências de chave. Isso é diferente da função de PHP array_merge() - que apaga as chaves e as renumera. - - - - append - -// passing name/value pairs -$smarty->append("Name","Fred"); -$smarty->append("Address",$address); - -// passing an associative array -$smarty->append(array("city" => "Lincoln","state" => "Nebraska")); - - - - append_by_ref - - - void append_by_ref - string varname - mixed var - - - void append_by_ref - string varname - mixed var - boolean merge - - - - Isso é usado para adicionar vlaores para o template por referência. - Se você adicionar uma variável por referência e então alterar este valor - o valor adicionado enxergará a alteração também. Para objetos, - append_by_ref() também evita uma cópia em memória do objeto adicionado. - Veja o manual do PHP em referenciando variáveis para uma melhor explanação sobre o assunto. - Se você passar o terceiro parâmetro opcional para true, - o valor irá ser mesclado com o array atual ao invés de adicioná-lo. - - - Notas Técnicas - - O parâmetro de união respeita a chave do array, então se você mesclar - dois índices númericos de arrays, eles devem sobrescrever-se um ao outro ou - em resultados não sequências de chave. Isso é diferente da função de PHP array_merge() - que apaga as chaves numéricas e as renumera. - - - - append_by_ref - -// appending name/value pairs -$smarty->append_by_ref("Name",$myname); -$smarty->append_by_ref("Address",$address); - - - - assign - - - void assign - mixed var - - - void assign - string varname - mixed var - - - - Isso é usado para fixar valores para o template. Você pode - explicitamente passar pares de nomes/valores, ou um array associativo - contendo o par de nome/valor. - - - assign - -// passing name/value pairs -$smarty->assign("Name","Fred"); -$smarty->assign("Address",$address); - -// passing an associative array -$smarty->assign(array("city" => "Lincoln","state" => "Nebraska")); - - - - assign_by_ref - - - void assign_by_ref - string varname - mixed var - - - - Isso é usado para fixar valores para o template por referência ao invés de fazer uma cópia. - Veja o manual do PHP na parte sobre referência de variáveis para uma explanação mais detalhada. - - - Notas Técnicas - - Isso é usado para fixar valores para o template por referência. - Se você fixar uma variável por referência e então alterar o valor dela, - o valor fixado enxergará o valor alterado também. - Para objetos, assign_by_ref() também restringe uma cópia de objetos fixados - em memória. - Veja o manual do php em refereciando variáveis para uma melhor explanação. - - - - assign_by_ref - -// passing name/value pairs -$smarty->assign_by_ref("Name",$myname); -$smarty->assign_by_ref("Address",$address); - - - - clear_all_assign - - - void clear_all_assign - - - - - Isso limpa o valor de todas as variáveis fixadas. - - -clear_all_assign - -// clear all assigned variables -$smarty->clear_all_assign(); - - - - clear_all_cache - - - void clear_all_cache - int expire time - - - - Isso limpa completamente o cache de template. Como um parâmetro - opcional, você pode fornecer um ano mínimo em segundos - que o arquivo de cache deve ter antes deles serem apagados. - - -clear_all_cache - -// clear the entire cache -$smarty->clear_all_cache(); - - - - clear_assign - - - void clear_assign - string var - - - - Isso limpa o valor de uma variável fixada. Isso - pode ser um valor simples, ou um array de valores. - - -clear_assign - -// clear a single variable -$smarty->clear_assign("Name"); - -// clear multiple variables -$smarty->clear_assign(array("Name","Address","Zip")); - - - - clear_cache - - - void clear_cache - string template - string cache id - string compile id - int expire time - - - - Isso limpa o cache de um template específico. Se você tem - múltiplos caches para este arquivo, você limpa o cache - específico fornecendo o cache id como o segundo parâmetro. - Você pode também passar um compile id como um terceiro parâmetro. - Você pode "agrupar" templates juntos e então eles podem ser removidos - como um grupo. Veja o caching section para maiores informações. Como um quarto - parâmetro opcional, você pode fornecer um ano mínimo em segundos - que o arquivo de cache deve - ter antes dele ser apagado. - - -clear_cache - -// clear the cache for a template -$smarty->clear_cache("index.tpl"); - -// clear the cache for a particular cache id in an multiple-cache template -$smarty->clear_cache("index.tpl","CACHEID"); - - - - clear_compiled_tpl - - - void clear_compiled_tpl - string tpl_file - - - - Isso limpa a versão compilada do recurso de template especificado, - ou todos os arquivos de templates compilados se nenhum for especificado. - Essa função é para uso avançado somente, não normalmente necessária. - - -clear_compiled_tpl - -// clear a specific template resource -$smarty->clear_compiled_tpl("index.tpl"); - -// clear entire compile directory -$smarty->clear_compiled_tpl(); - - - - clear_config - - - void clear_config - string var - - - - Isso limpa todas as variáveis de configuração fixadas. Se um nome de variável - é fornecido, somente esta variável é apagada. - - -clear_config - -// clear all assigned config variables. -$smarty->clear_config(); - -// clear one variable -$smarty->clear_config('foobar'); - - - - config_load - - - void config_load - string file - string section - - - - Isso carrega o arquivo de configuração de dados e fixa-o para o - template. Isso funciona idêntico a função - config_load. - - - Notas Técnicas - - À partir da Smarty 2.4.0, variáveis de template fixadas são - mantidas através de fetch() e display(). Variáveis de configuração carregadas - de config_load() são sempre de escopo global. Arquivos de configuração - também são compilados para execução rápida, e repeita o force_compile e compile_check parâmetros de configuração. - - - -config_load - -// load config variables and assign them -$smarty->config_load('my.conf'); - -// load a section -$smarty->config_load('my.conf','foobar'); - - - - display - - - void display - string template - string cache_id - string compile_id - - - - Isso mostra o template. Fornecendo um válido template resource - tipo e path. Como um segundo parâmetro opcional, você pode passar - um cache id. Veja o caching - section para maiores informações. - - - Como um terceiro parâmetro opcional, você pode passar um compile id. - Isso está no evento que você quer compilar diferentes versões do - mesmo template, como ter templates compilados separadamente para diferentes linguagens. - Outro uso para compile_id é quando você usa mais do que um $template_dir - mas somente um $compile_dir. Seta um compile_id em separado para cada $template_dir, - de outra maneira templates com mesmo nome irão sobrescrever-se um ao outro. - Você pode também setar a variável $compile_id ao invés de - passar isso para cada chamada - de display(). - - -display - -include("Smarty.class.php"); -$smarty = new Smarty; -$smarty->caching = true; - -// only do db calls if cache doesn't exist -if(!$smarty->is_cached("index.tpl")) -{ - - // dummy up some data - $address = "245 N 50th"; - $db_data = array( - "City" => "Lincoln", - "State" => "Nebraska", - "Zip" = > "68502" - ); - - $smarty->assign("Name","Fred"); - $smarty->assign("Address",$address); - $smarty->assign($db_data); - -} - -// display the output -$smarty->display("index.tpl"); - - - Use a sintaxe para template resources para - mostrar arquivos fora do $template_dir directory. - - -Exemplos de recursos da função display - -// absolute filepath -$smarty->display("/usr/local/include/templates/header.tpl"); - -// absolute filepath (same thing) -$smarty->display("file:/usr/local/include/templates/header.tpl"); - -// windows absolute filepath (MUST use "file:" prefix) -$smarty->display("file:C:/www/pub/templates/header.tpl"); - -// include from template resource named "db" -$smarty->display("db:header.tpl"); - - - - - fetch - - - string fetch - string template - string cache_id - string compile_id - - - - Isso retorna a saída do template ao invés de mostrá-lo. - Fornecendo um tipo ou path válido template resource. - Como um segundo parâmetro opcional, você pode passar o cache id. - Veja o caching - section para maiores informações. - - - Como um terceiro parâmetro opcional, você pode passar um compile id. - Isso está no evento que você quer compilar diferentes versões do - mesmo template, como ter templates compilados separadamente para - diferentes linguagens. Outro uso para compile_id é quando você - usa mais do que um $template_dir mas somente um $compile_dir. Seta - um compile_id em separado para cada $template_dir, de outra maneira - templates com mesmo nome irão sobrescrever-se uns aos outros. Você - pode também setar a variável $compile_id ao invés - de passá-la para cada chamada de fetch(). - - -fetch - -include("Smarty.class.php"); -$smarty = new Smarty; - -$smarty->caching = true; - -// only do db calls if cache doesn't exist -if(!$smarty->is_cached("index.tpl")) -{ - - // dummy up some data - $address = "245 N 50th"; - $db_data = array( - "City" => "Lincoln", - "State" => "Nebraska", - "Zip" = > "68502" - ); - - $smarty->assign("Name","Fred"); - $smarty->assign("Address",$address); - $smarty->assign($db_data); - -} - -// capture the output -$output = $smarty->fetch("index.tpl"); - -// do something with $output here - -echo $output; - - - - get_config_vars - - - array get_config_vars - string varname - - - - Isso retorna o valor da variável de configuração dada. - Se nenhum parâmetro é dado, um array de todas as variáveis dos arquivos de configurações é retornado. - - -get_config_vars - -// get loaded config template var 'foo' -$foo = $smarty->get_config_vars('foo'); - -// get all loaded config template vars -$config_vars = $smarty->get_config_vars(); - -// take a look at them -print_r($config_vars); - - - - get_registered_object - - - array get_registered_object - string object_name - - - - Isso retorna uma referência para um objeto registrado. - Isso é útil para dentro de uma função customizada quando você - precisa acessar diretamente um objeto registrado. - - -get_registered_object - -function smarty_block_foo($params, &$smarty) { - if (isset[$params['object']]) { - // get reference to registered object - $obj_ref =& $smarty->&get_registered_object($params['object']); - // use $obj_ref is now a reference to the object - } -} - - - - get_template_vars - - - array get_template_vars - string varname - - - - Isso retorna o valor de uma variável fixada. Se nenhum parâmetro - é dado, um array de todas as variávels fixadas é retornado. - - -get_template_vars - -// get assigned template var 'foo' -$foo = $smarty->get_template_vars('foo'); - -// get all assigned template vars -$tpl_vars = $smarty->get_template_vars(); - -// take a look at them -print_r($tpl_vars); - - - - is_cached - - - void is_cached - string template - [string cache_id] - - - - Isso retorna true se há um cache válido para esse template. - Isso somente funciona se caching está setado para true. - - -is_cached - -$smarty->caching = true; - -if(!$smarty->is_cached("index.tpl")) { - // do database calls, assign vars here -} - -$smarty->display("index.tpl"); - - - Você pode também passar um cache id como um segundo parâmetro opcional - no caso você quer múltiplos caches para o template dado. - - -is_cached with multiple-cache template - -$smarty->caching = true; - -if(!$smarty->is_cached("index.tpl","FrontPage")) { - // do database calls, assign vars here -} - -$smarty->display("index.tpl","FrontPage"); - - - - load_filter - - - void load_filter - string type - string name - - - - Essa função pode ser usada para carregar um filtro de plugin. O primeiro - argumento especifica o tipo do filtro para carregar e pode ser um - dos seguintes: 'pre', 'post', ou 'output'. O segundo argumento - especifica o nome do filtro de plugin, por exemplo, 'trim'. - - -Carregando filtros de plugins - -$smarty->load_filter('pre', 'trim'); // load prefilter named 'trim' -$smarty->load_filter('pre', 'datefooter'); // load another prefilter named 'datefooter' -$smarty->load_filter('output', 'compress'); // load output filter named 'compress' - - - - register_block - - - void register_block - string name - mixed impl - bool cacheable - array or null cache_attrs - - - - Use isso para registrar dinamicamente blocos de funções de plugins. - Passe no bloco de nomes de função, seguido por uma chamada de função PHP - que implemente isso. - - - - A chamada de uma função-php impl pode ser (a) - uma string contendo o nome da função ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um - método desta classe. - - -$cacheable e $cache_attrs podem ser omitidos na maior parte dos casos. Veja Controlando modos de Saída de Cache dos Plugins para obter informações apropriadas. - - -register_block - -/* PHP */ -$smarty->register_block("translate", "do_translation"); - -function do_translation ($params, $content, &$smarty, &$repeat) { - if (isset($content)) { - $lang = $params['lang']; - // do some translation with $content - return $translation; - } -} - -{* template *} -{translate lang="br"} - Hello, world! -{/translate} - - - - register_compiler_function - - - void register_compiler_function - string name - mixed impl - bool cacheable - - - - Use isso para registrar dinamicamente uma função de plugin compilador. - Passe no nome da função compilador, seguido pela função - PHP que implemente isso. - - - A chamada para função-php impl - pode ser uma string contendo o nome da função ou (b) um array - no formato array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo o método - desta classe. - - - $cacheable pode ser omitido na maioria - dos casos. Veja Controlando modos de Saída de Cache dos Plugins - para obter informações apropriadas. - - - - register_function - - - void register_function - string name - mixed impl - bool cacheable - array or null cache_attrs - - - - Use isso para registrar funções de plugins dinamicamente para o template. - Passe no template o nome da função, - seguido pelo nome da função PHP que implemente isso. - - - A chamada para função-php impl pode ser (a) - uma string contendo o nome da função ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um método - desta classe. - - -$cacheable e $cache_attrs podem ser omitidos na maioria dos casos. Veja Controlando modos de Saída Cache dos Plugins para obter informações apropriadas. - - -register_function - -$smarty->register_function("date_now", "print_current_date"); - -function print_current_date ($params) { - extract($params); - if(empty($format)) - $format="%b %e, %Y"; - return strftime($format,time()); -} - -// agora você pode usar isso no Smarty para mostrar a data atual: {date_now} -// ou, {date_now format="%Y/%m/%d"} para formatar isso. - - - - register_modifier - - - void register_modifier - string name - mixed impl - - - - Use isso para modificar dinamicamente plugins registrados. - Passe no template o nome do modificador, seguido da função PHP - que implemente isso. - - - A chamada da função-php impl - pode ser (a) uma strin contendo o nome da função - ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um método desta classe. - - - -register_modifier - -// let's map PHP's stripslashes function to a Smarty modifier. - -$smarty->register_modifier("sslash","stripslashes"); - -// now you can use {$var|sslash} to strip slashes from variables - - - - register_object - - - void register_object - string object_name - object $object - array allowed methods/properties - boolean format - array block methods - - - - Isso é para registrar um objeto para uso no template. Veja a - seção de objetos - do manual para examplos. - - - - register_outputfilter - - - void register_outputfilter - mixed function - - - - Use isso para registrar dinamicamente filtros de saída para operações - na saída do template antes de mostrá-lo. Veja - Filtros de Saída de Templates - para maiores informações de como configurar uma - função de filtro de saída. - - - A chamada da função-php function pode - ser (a) uma string contendo um nome de função ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um método - desta classe. - - - - register_postfilter - - - void register_postfilter - mixed function - - - - Use isso para registrar dinamicamente pósfiltros para rodar templates - após eles terem sido compilados. Veja - pósfiltros de template para - maiores informações de como configurar funções de pósfiltragem. - - - A chamada da função-php function pode - ser (a) uma string contendo um nome de função ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um método - desta classe. - - - - register_prefilter - - - void register_prefilter - mixed function - - - - Use isso para registrar préfiltros dinamicamente para rodar - templates antes deles serem compilados. Veja template prefilters para - maiores informações de como configurar uma função de préfiltragem. - - - A chamada da função-php function pode - ser (a) uma string contendo um nome de função ou (b) um array no formato - array(&$object, $method) com - &$object sendo uma referência para um - objeto e $method sendo uma string - contendo o nome do método ou (c) um array no formato - array(&$class, $method) com - $class sendo um nome de classe e - $method sendo um método - desta classe. - - - - register_resource - - - void register_resource - string name - array resource_funcs - - - - Use isso para registrar dinamicamente um recurso de plugin com a Smarty. - Passe no nome o recurso e o array de funções - PHP que implementam isso. Veja - template resources - para maiores informações de como configurar uma função para retornar - templates. - - - Notas Técnicas - - Um nome de recurso deve ter ao menos dois caracteres de comprimento. - Um caracter do nome de recurso irá ser ignorado e usado como parte do - path do arquivo como, $smarty->display('c:/path/to/index.tpl'); - - - - A função-php-array resource_funcs - deve ter 4 ou 5 elementos. Com 4 elementos os elementos são - as functions-callbacks para as respectivas funções "source", - "timestamp", "secure" e "trusted" de recurso. - Com 5 elementos o primeiro elemento tem que ser um objeto por referência - ou um nome de classe do objeto ou uma classe implementando o recurso e os 4 - elementos seguintes tem que ter os nomes de métodos - implementando "source", "timestamp", - "secure" e "trusted". - - -register_resource - -$smarty->register_resource("db", array("db_get_template", - "db_get_timestamp", - "db_get_secure", - "db_get_trusted")); - - - - trigger_error - - - void trigger_error - string error_msg - [int level] - - - - Essa função pode ser usada para saída de uma mensagem de erro usando Smarty. - O parâmetro level pode ser um dos valores usados - para a função de php trigger_error(), ex.: E_USER_NOTICE, - E_USER_WARNING, etc. Por padrão é E_USER_WARNING. - - - - - template_exists - - - bool template_exists - string template - - - - Essa função checa se o template especificado existe. Isso pode - aceitar um path para o template no filesystem ou um recurso de string - especificando o template. - - - - unregister_block - - - void unregister_block - string name - - - - Use isso para desregistrar dinamicamente um bloco de funções de plugin. - Passe no bloco o nome da função. - - - - unregister_compiler_function - - - void unregister_compiler_function - string name - - - - Use essa função para desregistrar uma função de compilador. Passe - o nome da função de compilador. - - - - unregister_function - - - void unregister_function - string name - - - - Use isso para desregistrar dinamicamente uma função de plugin do template. - Passe no template o nome da função. - - -unregister_function - -// nós não queremos que designers template tenham acesso aos nossos arquivos do sistema - -$smarty->unregister_function("fetch"); - - - - unregister_modifier - - - void unregister_modifier - string name - - - - Use isso para desregistrar dincamimente um modificador de plugin. - Passe no template o nome do modificador. - - -unregister_modifier - -// nós não queremos que designers de template usem strip tags para os elementos - -$smarty->unregister_modifier("strip_tags"); - - - - unregister_object - - - void unregister_object - string object_name - - - - Use isso para desregistrar um objeto. - - - - unregister_outputfilter - - - void unregister_outputfilter - string function_name - - - - Use isso para desregistrar dinamicamente um filtro de saída. - - - - unregister_postfilter - - - void unregister_postfilter - string function_name - - - - Use isso para dinamicamente desregistrar um pósfiltro. - - - - unregister_prefilter - - - void unregister_prefilter - string function_name - - - - Use isso para dinamicamente desregistrar um préfiltro. - - - - unregister_resource - - - void unregister_resource - string name - - - - Use isso para dinamicamente desregistrar um recurso de plugin. - Passe no parâmetro nome o nome do recurso. - - -unregister_resource - -$smarty->unregister_resource("db"); - - - - - - Caching - - Caching é usado para aumentar a velocidade de chamada para display() ou fetch() salvando isso num arquivo de saída. Se há uma versão - de cache disponível para a chamada, isso é mostrado ao invés de regerar a saída de dados. - Caching pode fazer coisas tremendamente rápidas, - especialmente templates com longo tempo computacional. Desde a saída de dados do - display() ou fetch() está em cache, um arquivo de cache poderia ser composto por - diversos arquivos de templates, arquivos de configuração, etc. - - - Desde que templates sejam dinâmicos, é importante isso ter cuidado com - o que você está fazendo cache e por quanto tempo. Por exemplo, se você está mostrando - a página principal do seu website na qual as alterações de conteúdo são muito frequentes, - isso funciona bem para cache dessa por uma hora ou mais. Um outro modo, se você está - mostrando uma página com um mapa do tempo contendo novas informações por minuto, não - faz sentido fazer cache nesta página. - - - Configurando Caching - - A primeira coisa a fazer é habilitar o caching. Isso é feito pela configuração $caching = true (or 1.) - - - Habilitando Caching - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$smarty->display('index.tpl'); - - - Com caching habilitado, a chamada para a função display('index.tpl') irá trazer - o template como usual, mas também - salva uma cópia disso para o arquivo de saída (uma cópia de cache) in the $cache_dir. - Na próxima chamada de display('index.tpl'), a cópia em cache será usada - ao invés de trazer novamente o template. - - - Notas Técnicas - - Os arquivos no $cache_dir são nomeados com similaridade ao nome do arquivo de template. - Embora eles terminem com a extensão ".php", eles não são realmente scripts executáveis de php. - Não edite estes arquivos! - - - - Cada página em cache tem um período de tempo limitado determinado por $cache_lifetime. O padrão do valor é - 3600 segundos, ou 1 hora. Após o tempo expirar, o cache é regerado. - É possível dar tempos individuais para caches com seu próprio tempo - de expiração pela configuração $caching = 2. Veja a documentação em $cache_lifetime para detalhes. - - - Configurando cache_lifetime por cache - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = 2; // lifetime is per cache - -// set the cache_lifetime for index.tpl to 5 minutes -$smarty->cache_lifetime = 300; -$smarty->display('index.tpl'); - -// set the cache_lifetime for home.tpl to 1 hour -$smarty->cache_lifetime = 3600; -$smarty->display('home.tpl'); - -// NOTE: the following $cache_lifetime setting will not work when $caching = 2. -// The cache lifetime for home.tpl has already been set -// to 1 hour, and will no longer respect the value of $cache_lifetime. -// The home.tpl cache will still expire after 1 hour. -$smarty->cache_lifetime = 30; // 30 seconds -$smarty->display('home.tpl'); - - - Se $compile_check está habilitado, - cada arquivo de template e arquivo de configuração que está envolvido com o arquivo em cache - é checado por modificações. Se algum destes arquivos foi modificado desde que o último cache - foi gerado, o cache é imediatamente regerado. - Isso é ligeiramente uma forma de optimização de performance de overhead, deixe $compile_check setado para false. - - - Habilitando $compile_check - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; -$smarty->compile_check = true; - -$smarty->display('index.tpl'); - - - Se $force_compile está habilitado, - os arquivos de cache irão sempre ser regerados. Isso é efetivamente desativar caching. - $force_compile é usualmente para propósitos de debug somente, um caminho mais - eficiente de desativar caching é setar o $caching = false (ou 0.) - - - A função is_cached() - pode ser usada para testar se um template tem um cache válido ou não. - Se você tem um template com cache que requer alguma coisa como um retorno do banco de dados, - você pode usar isso para pular este processo. - - - Usando is_cached() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -if(!$smarty->is_cached('index.tpl')) { - // No cache available, do variable assignments here. - $contents = get_database_contents(); - $smarty->assign($contents); -} - -$smarty->display('index.tpl'); - - - Você pode deixar partes da sua página dinâmica com a função de template insert. - Vamos dizer que sua página inteira pode ter cache exceto para um banner que é - mostrado abaixo do lado direito da sua página. Usando uma função insert para o banner, - você pode deixar esse elemento dinâmico dentro do conteúdo de cache. Veja a documentação - em insert para - detalhes e exemplos. - - - Você pode limpar todos os arquivos de cache com a função clear_all_cache(), ou - arquivos de cache individuais (ou grupos) com a função clear_cache(). - - - Limpando o cache - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// clear out all cache files -$smarty->clear_all_cache(); - -// clear only cache for index.tpl -$smarty->clear_cache('index.tpl'); - -$smarty->display('index.tpl'); - - - - Multiple Caches Per Page - - Você pode ter múltiplos arquivos de cache para uma simples chamada de display() - ou fetch(). Vamos dizer que uma chamada para display('index.tpl') deve ter vários - conteúdo de saída diferentes dependendo de alguma condição, e você quer separar - os caches para cada um. Você pode fazer isso passando um cache_id como um - segundo parâmetro para a chamada da função. - - - Passando um cache_id para display() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$my_cache_id = $_GET['article_id']; - -$smarty->display('index.tpl',$my_cache_id); - - - Acima, nós estamos passando a variável $my_cache_id para display() com o - cache_id. Para cada valor único de $my_cache_id, um cache em separado irá ser - gerado para index.tpl. Nesse exemplo, "article_id" foi passado em URL e é usado - como o cache_id. - - - Notas Técnicas - - Tenha muito cuidado quando passar valores do cliente (web brownser) dentro - da Smarty (ou alguma aplicação PHP.) Embora o exemplo acima usando o article_id - vindo de uma URL pareça fácil, isso poderia ter consequências ruins. O - cache_id é usado para criar um diretório no sistema de arquivos, então se o usuário - decidir passar um valor extremamente largo para article_id, ou escrever um script - que envia article_ids randômicos em um ritmo rápido, isso poderia possivelmente causar - problemas em nível de servidor. Tenha certeza de limpar algum dado passado antes de usar isso. Nessa instãncia, talvez você - saiba que o article_id tem um comprimento de 10 caracteres e isso é constituído somente - de alfa-numéricos, e deve ser um - article_id válido no database. Verifique isso! - - - - Tenha certeza de passar o mesmo cache_id como o segundo - parâmetro para is_cached() e - clear_cache(). - - - Passando um cache_id para is_cached() - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -$my_cache_id = $_GET['article_id']; - -if(!$smarty->is_cached('index.tpl',$my_cache_id)) { - // No cache available, do variable assignments here. - $contents = get_database_contents(); - $smarty->assign($contents); -} - -$smarty->display('index.tpl',$my_cache_id); - - - Você pode limpar todos os caches para um cache_id em particular passando - o primeiro parâmetro null para clear_cache(). - - - Limpando todos os caches para um cache_id em particular - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// clear all caches with "sports" as the cache_id -$smarty->clear_cache(null,"sports"); - -$smarty->display('index.tpl',"sports"); - - - Desta maneira, você pode "agrupar" seus - caches juntos dando-lhes o mesmo cache_id. - - - - Grupos de Cache - - Você pode fazer agrupamentos mais elaborados configurando grupos de cache_id. Isso é - realizado pela separação de cada sub-grupo com uma barra vertical "|" no valor do - cache_id. Você pode ter muitos sub-grupos com você desejar. - - - Grupos de cache_id - -require('Smarty.class.php'); -$smarty = new Smarty; - -$smarty->caching = true; - -// clear all caches with "sports|basketball" as the first two cache_id groups -$smarty->clear_cache(null,"sports|basketball"); - -// clear all caches with "sports" as the first cache_id group. This would -// include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..." -$smarty->clear_cache(null,"sports"); - -$smarty->display('index.tpl',"sports|basketball"); - - - Notas Técnicas - - O agrupamento de cache id NÃO use o path do template como alguma parte do cache_id. - Por exemplo, se você tem display('themes/blue/index.tpl'), você não pode limpar o cache - para tudo que estiver sob o diretório "themes/blue". Se você quiser fazer isso, você deve - agrupá-los no cache_id, como display('themes/blue/index.tpl','themes|blue'); Então - você pode limpar os caches para o - tema azul com with clear_cache(null,'themes|blue'); - - - - - - Controlling Cacheability of Plugins' Output - -Desde Smarty-2.6.0 os caches de plugins pode ser declarados -ao registrá-los. O terceiro parâmetro para register_block, -register_compiler_function e register_function é chamado -$cacheable e o padrão para true que é também -o comportamento de plugins na versão da Smarty antecessores à 2.6.0 - - - -Quando registrando um plugin com $cacheable=false o plugin é chamado todo o tempo na página que está sendo mostrada, sempre se a página vier do cache. A função de plugin tem um comportamento levemente como uma função insert. - - - -Em contraste para {insert} o atributo para o plugin não está em cache por padrão. Eles podem ser declarados para serem cacheados com o quarto parâmetro $cache_attrs. $cache_attrs é um array de nomes de atributos que devem ser cacheados, então a função de plugin pega o valor como isso sendo o tempo que a página foi escrita para o cache todo o tempo isso é buscado do cache. - - - - Prevenindo uma saída de plugin de ser cacheada - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->caching = true; - -function remaining_seconds($params, &$smarty) { - $remain = $params['endtime'] - time(); - if ($remain >=0) - return $remain . " second(s)"; - else - return "done"; -} - -$smarty->register_function('remaining', 'remaining_seconds', false, array('endtime')); - -if (!$smarty->is_cached('index.tpl')) { - // fetch $obj from db and assign... - $smarty->assign_by_ref('obj', $obj); -} - -$smarty->display('index.tpl'); - - -index.tpl: - -Tempo restante: {remain endtime=$obj->endtime} - -O número de segundos até que o endtime de $obj alcança alterações em cada display de página, mesmo que a página esteja em cache. Desde o atributo endtime esteja em cache o objeto somente tem que ser puxado do banco de dados quando a página está escrita para o cache mas não em requisições subsequentes da página. - - - - - - Prevenindo uma passagem inteira do template para o cache - -index.php: - -require('Smarty.class.php'); -$smarty = new Smarty; -$smarty->caching = true; - -function smarty_block_dynamic($param, $content, &$smarty) { - return $content; -} -$smarty->register_block('dynamic', 'smarty_block_dynamic', false); - -$smarty->display('index.tpl'); - - -index.tpl: - -Page created: {"0"|date_format:"%D %H:%M:%S"} - -{dynamic} - -Now is: {"0"|date_format:"%D %H:%M:%S"} - -... do other stuff ... - -{/dynamic} - - - -Quando recarregado a página que você irá notar que ambas as datas diferem. Uma é "dinâmica" e uma é "estática". Você pode fazer qualquer coisa entre as tags {dynamic}...{/dynamic} e ter certeza que isso não irá ficar em cache como o restante da página. - - - - - - Advanced Features - - Objetos - - O Smarty permite acesso a objetos do PHP através de seus templates. Há duas formas de acessá-los. - Uma forma é registrar objetos para o template, então os acessa via sintaxe similar a funções - customizáveis. A outra forma é atribuir objetos para os templates e acessá-los como se fossem - uma variável atribuída. O primeiro método tem uma sintaxe de template muito mais legal. E também - mais segura, à medida que um objeto registrado pode ser restrito a certos métodos e - propriedades. Entretanto, um objeto registrado não pode ser - posto em loop ou ser atribuido em arrays de - objetos, etc. O método que você escolher será determinado pelas suas necessidades, mas use o - primeiro método se possível para - manter um mínimo de sintaxe no template. - - - Se a segurança está habilitada, nenhum dos métodos privados ou funções podem acessados - (começando com "_"). Se um método e propriedade de um mesmo nome existir, o método será - usado. - - - Você pode restringir os métodos e propriedades que podem ser acessados listando os em um array - como o terceiro parâmetro de registração. - - - Por definição, parâmetros passados para objetos através dos templates são passados da mesma - forma que funções customizáveis os obtém. Um array associativo é passado como o primeiro parâmetro, - e o objeto smarty como o segundo. Se você quer que os parâmetros passados um de cada vez - por cada argumento como passagem de parâmetro de objeto tradicional, defina o quarto parâmetro - de registração para falso. - - - O quinto parâmetro opcional só tem efeito com format - sendo true e contém - uma lista de métods de ob que seriam tratados como - blocos. Isso significa que estes métodos - tem uma tag de fechamento no template - ({foobar->meth2}...{/foobar->meth2}) e - os parâmetros para os métodos tem a mesma sinopse como os parâmetros para - block-function-plugins: Eles pegam 4 parâmetros - $params, - $content, - &$smarty e - &$repeat e eles também comportam-se como - block-function-plugins. - - - usando um objeto registrado ou atribuído - -<?php -// O objeto - -class My_Object { - function meth1($params, &$smarty_obj) { - return "this is my meth1"; - } -} - -$myobj = new My_Object; -// registrando o objeto (será por referência) -$smarty->register_object("foobar",$myobj); -// Se você quer restringie acesso a certos métodos ou propriedades, liste-os -$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); -// Se você quer usar o formato de parâmetro de objeto tradicional, passe um booleano de false -$smarty->register_object("foobar",$myobj,null,false); - -// Você pode também atribuir objetos. Atribua por referência quando possível. -$smarty->assign_by_ref("myobj", $myobj); - -$smarty->display("index.tpl"); -?> - -TEMPLATE: - -{* accessa nosso objeto registrado *} -{foobar->meth1 p1="foo" p2=$bar} - -{* você pode também atribuir a saída *} -{foobar->meth1 p1="foo" p2=$bar assign="output"} -the output was {$output} - -{* acessa nosso objeto atribuído *} -{$myobj->meth1("foo",$bar)} - - - - Prefilters - - Os prefilters de Template são funções de PHP nas quais seus templates são rodados - antes de serem compilados. Isto é bom para preprocessamento de seus templates para remover - comentários indesejados, mantendo o olho no que as pessoas estão colocando nos seus templates, - etc. Prefilters podem ser ou registrado - ou carregado do diretório de plugins usando a função - load_filter() - ou pela configuração da variável - $autoload_filters. - O Smarty passará o código fonte do template como o - primeiro argumeto, e espera a função retornar - o código fonte do template resultante. - - - Usando um prefilter de template - -<?php -// Ponha isto em sua aplicação -function remove_dw_comments($tpl_source, &$smarty) -{ - return preg_replace("/<!--#.*-->/U","",$tpl_source); -} - -// registrar o prefilter -$smarty->register_prefilter("remove_dw_comments"); -$smarty->display("index.tpl"); -?> - -{* Smarty template index.tpl *} -<!--# esta linha será removida pelo prefilter --> - - - - - Postfilters - - Os postfilters de template são funções de PHP nas quais seus templates são rodados - imediatamente depois de serem compilados. Os postfilters podem ser ou - registradocarrgados do diretório de - plugins usando a função - load_filter() ou pela - variável de configuração - $autoload_filters. - O Smarty passará o código fonte do template compilado - como o primeiro argumento, e espera - a função retornar o resultado do processamento. - - - usando um postfilter de template - -<?php -// ponha isto em sua aplicação -function add_header_comment($tpl_source, &$smarty) -{ - return "<?php echo \"<!-- Created by Smarty! -->\n\" ?>\n".$tpl_source; -} - -// registra o postfilter -$smarty->register_postfilter("add_header_comment"); -$smarty->display("index.tpl"); -?> - -{* compiled Smarty template index.tpl *} -<!-- Created by Smarty! --> -{* rest of template content... *} - - - - - Output Filters (Filtros de Saída) - - Quando o template é invocado via display() ou fetch(), sua saída pode ser enviada - através de um ou mais filtros de saída. Estes diferem dos postfilters porque postfilters - operam em templates compilados antes de serem salvos para o disco, e os filtros de saída - operam na saída do template quando - ele é executado. - - - - Filtros de Saída podem ser ou - registrado ou carregado - do diretório de plugins usando a função - load_filter() ou configurando a variável - $autoload_filters. - O Smarty passará a saída como o primeiro argumento, - e espera a função retornar o resultado - do processamento. - - - usando um filtro de saída de template - -<?php -// ponha isto em sua aplicação -function protect_email($tpl_output, &$smarty) -{ - $tpl_output = - preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', - '$1%40$2', $tpl_output); - return $tpl_output; -} - -// registra o outputfilter -$smarty->register_outputfilter("protect_email"); -$smarty->display("index.tpl"); - -// agora qualquer ocorrência de um endereço de email na saída do template terá uma -// simples proteção contra spambots -?> - - - - - Função Manipuladora de Cache - - Como uma alternativa ao uso do mecanismo de caching padrão baseado em arquivo, você pode - especificar uma função de manipulação de cache customizada que será usada para ler, escrever - e limpar arquivos de cache. - - - Crie uma função em sua aplicação que o Smarty usará como um manipulador de cache. Defina o - nome dela na variável de classe - $cache_handler_func. - O Smarty agora usará esta para manipular dados no cache. O primeiro argumento é a ação, - que é um desses 'read', 'write' e 'clear'. O segundo parâmetro é o objeto do Smarty. O - terceiro parâmetro é o conteúdo que está no cache. - No write, o Smarty passa o conteúdo em - cache nestes parâmetros. No 'read', o Smarty espera sua função aceitar este parâmetro por - referência e preenche ele com os dados em cache. No 'clear', passa uma variável simulacra aqui - visto que ela não é usada. O quarto parâmetro - é o nome do arquivo de template (necessário para - ler/escrever), o quinto parâmetro é a cache_id (opcional), - e o sexto é a compile_id (opcional). - - - Note que: O último parâmetro ($exp_time)foi adicionado no Smarty-2.6.0. - - - exemplo usando MySQL como uma fonte de cache - -<?php -/* - -exemplo de uso: - -include('Smarty.class.php'); -include('mysql_cache_handler.php'); - -$smarty = new Smarty; -$smarty->cache_handler_func = 'mysql_cache_handler'; - -$smarty->display('index.tpl'); - - -mysql database is expected in this format: - -create database SMARTY_CACHE; - -create table CACHE_PAGES( -CacheID char(32) PRIMARY KEY, -CacheContents MEDIUMTEXT NOT NULL -); - -*/ - -function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null, $exp_time=null) -{ - // set db host, user and pass here - $db_host = 'localhost'; - $db_user = 'myuser'; - $db_pass = 'mypass'; - $db_name = 'SMARTY_CACHE'; - $use_gzip = false; - - // cria um cache id unico - $CacheID = md5($tpl_file.$cache_id.$compile_id); - - if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) { - $smarty_obj->_trigger_error_msg("cache_handler: could not connect to database"); - return false; - } - mysql_select_db($db_name); - - switch ($action) { - case 'read': - // save cache to database - $results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'"); - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $row = mysql_fetch_array($results,MYSQL_ASSOC); - - if($use_gzip && function_exists("gzuncompress")) { - $cache_contents = gzuncompress($row["CacheContents"]); - } else { - $cache_contents = $row["CacheContents"]; - } - $return = $results; - break; - case 'write': - // save cache to database - - if($use_gzip && function_exists("gzcompress")) { - // compress the contents for storage efficiency - $contents = gzcompress($cache_content); - } else { - $contents = $cache_content; - } - $results = mysql_query("replace into CACHE_PAGES values( - '$CacheID', - '".addslashes($contents)."') - "); - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $return = $results; - break; - case 'clear': - // clear cache info - if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) { - // clear them all - $results = mysql_query("delete from CACHE_PAGES"); - } else { - $results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'"); - } - if(!$results) { - $smarty_obj->_trigger_error_msg("cache_handler: query failed."); - } - $return = $results; - break; - default: - // error, unknown action - $smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\""); - $return = false; - break; - } - mysql_close($link); - return $return; - -} - -?> - - - - - Recursos (Resources) - - Os templates podem vir de uma variedade de fontes. Quando você exibe (display) ou - busca (fetch) um template, ou inclui um template de dentro de outro template, você - fornece um tipo de recurso, seguido pelo - caminho e nome do template apropriado. Se um - recurso não é dado explicitamente o valor de - $default_resource_type é assumido. - - - Templates partindo do $template_dir - - Templates a partir do $template_dir não exigem um recurso de template, - apesar de você usar o arquivo: resource for consistancy. - Apenas forneça o caminho para o template que você quer usar em relação ao diretório - root $template_dir. - - - Usando templates partindo do $template_dir - -// from PHP script -$smarty->display("index.tpl"); -$smarty->display("admin/menu.tpl"); -$smarty->display("file:admin/menu.tpl"); // Igual ao de cima - -{* de dentro do template do Smarty *} -{include file="index.tpl"} -{include file="file:index.tpl"} {* igual ao de cima *} - - - - Templates partindo de qualquer diretório - - Os Templates de fora do $template_dir exigem o arquivo: - tipo de recurso do template, - seguido pelo caminho absoluto e nome do template. - - - usando templates partindo de qualquer diretório - -// de dentro do script PHP -$smarty->display("file:/export/templates/index.tpl"); -$smarty->display("file:/path/to/my/templates/menu.tpl"); - -{* de dentro do template do Smarty *} -{include file="file:/usr/local/share/templates/navigation.tpl"} - - - - Caminhos de arquivos do Windows - - Se você está usando uma máquina windows, caminhos de arquivos normalmente incluem uma letra - do drive (C:) no começo do nome do caminho. - Esteja certo de usar "file:" no caminho para - evitar conflitos de nome e obter os resultados desejados. - - - usando templates com caminhos de arquivo do windows - -// de dentro do script PHP -$smarty->display("file:C:/export/templates/index.tpl"); -$smarty->display("file:F:/path/to/my/templates/menu.tpl"); - -{* de dentro do template do Smarty *} -{include file="file:D:/usr/local/share/templates/navigation.tpl"} - - - - - - Templates partindo de outras fontes - - Você pode resgatar templates usando qualquer fonte possível de você acessar com PHP: banco - de dados, sockets, LDAP, e assim por diante. - Você faz isto escrevendo as funções de plugin - de recurso e registrando elas com o Smarty. - - - - Veja a seção plugins de recurso - para mais informação sobre as funções - que você deve fornecer. - - - - - Note que você pode ativar manualmente o recurso de arquivo embutido, mas não pode fornecer um recurso que busca templates a partir do sistema de arquivos de alguma outra forma registrando sob um outro nome de recurso. - file resource, but you can provide a resource - that fetches templates from the file system in some other way by - registering under another resource name. - - - - usando recursos customizáveis - -// no script PHP - -// ponha estas funções em algum lugar de sua aplicação -function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) -{ - // faça o banco de dados chamar aqui para buscar o seu template, - // preenchendo o $tpl_source - $sql = new SQL; - $sql->query("select tpl_source - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_source = $sql->record['tpl_source']; - return true; - } else { - return false; - } -} - -function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj) -{ - // faça o banco de dados chamar daqui para preencher a $tpl_timestamp. - $sql = new SQL; - $sql->query("select tpl_timestamp - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_timestamp = $sql->record['tpl_timestamp']; - return true; - } else { - return false; - } -} - -function db_get_secure($tpl_name, &$smarty_obj) -{ - // assume-se que todos os templates são seguros - return true; -} - -function db_get_trusted($tpl_name, &$smarty_obj) -{ - // não usado para templates -} - -// registrar o nome de recurso "db" -$smarty->register_resource("db", array("db_get_template", - "db_get_timestamp", - "db_get_secure", - "db_get_trusted")); - -// usando o recurso a partir do script PHP -$smarty->display("db:index.tpl"); - -{* usando o recurso de dentro do template do Smarty *} -{include file="db:/extras/navigation.tpl"} - - - - - Função Manipuladora de Template Padrão - - Você pode especificar a função que é usada para devolver o conteúdo do template no evento - em que o template não pode ser devolvido de seu recurso. Um uso disto é para criar templates - que não existem "on-the-fly" - (templates cujo conteúdo flutua muito, bastante variável). - - - usando a função manipuladora de template padrão - -<?php -// ponha esta função em algum lugar de sua aplicação - -function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj) -{ - if( $resource_type == 'file' ) { - if ( ! is_readable ( $resource_name )) { - // cria um arquivo de template, retorna o conteúdo. - $template_source = "This is a new template."; - $template_timestamp = time(); - $smarty_obj->_write_file($resource_name,$template_source); - return true; - } - } else { - // não é arquivo - return false; - } -} - -// defina a manipuladora padrão -$smarty->default_template_handler_func = 'make_template'; -?> - - - - - - - Extendendo a Smarty com Plugins - - A Versão 2.0 introduziu a arquitetura de plugin que é usada para quase todas as - funcionalidades customizáveis da Smarty. Isto inclui: - - funções - modificadores - funções de bloco - funções de compilador - prefiltros - posfiltros - filtros de saída - recursos - inserir - - Com a exceção de recursos, a compatibilidade com a forma antiga de funções de - manipulador de registro via register_* API é preservada. Se você não usou o API mas no lugar disso - modificou as variáveis de classe $custom_funcs, $custom_mods, e - outras diretamente, então você vai - precisar ajustar seus scripts para ou usar API ou converter suas - funcionalidade customizadas em plugins. - - - - Como os Plugins Funcionam - - Plugins são sempre lidos quando requisitados. Apenas os modificadores específicos, - funções, recursos, etc convocados em scripts de template serão lidos. Além disso, cada plugin - é lido apenas uma vez, mesmo se você tem várias instâncias diferentes da Smarty rodando na mesma - requisição. - - - Pre/posfiltros e filtros de saída são uma parte de um caso especial. Visto que eles não são mencionados - nos templates, eles devem ser registrados ou lidos explicitamente via funções de API antes do template - ser processado. - A ordem em que multiplos filtros do mesmo - tipo são executados dependem da ordem em que eles são registrados ou lidos. - - - O diretório de plugins - pode ser uma string contendo um caminho ou um array - contendo multiplos caminhos. Para instalar um plugin, - simplesmente coloque-o em um dos diretórios e a Smarty irá usá-lo automaticamente. - - - - - Convenções de Aparência - - Arquivos e funções de Plugin devem seguir uma convenção de aparência muito específica - a fim de ser localizada pela Smarty. - - - Os arquivos de plugin devem ser nomeados da sequinte forma: -
- - - tipo.nome.php - - -
-
- - Onde tipo é um dos seguintes tipos de plugin: - - function - modifier - block - compiler - prefilter - postfilter - outputfilter - resource - insert - - - - E nome seria um identificador válido (letras, - números, e underscores apenas). - - - Alguns exemplos: function.html_select_date.php, - resource.db.php, - modifier.spacify.php. - - - As funções de plugin dentro dos arquivos do plugin devem ser nomeadas da seguinte forma: -
- - smarty_tipo_nome - -
-
- - O significado de tipo e - nome são os mesmos de antes. - - - A Smarty mostrará mensagens de erro apropriadas se o arquivo de plugins que é necessário não é encontrado, - ou se o arquivo ou a função de plugin - estão nomeadas inadequadamente. - -
- - - Escrevendo Plugins - - Os Plugins podem ser ou lidos pela Smarty automaticamente do sistema de arquivos ou eles podem - ser registrados no tempo de execução via uma das funções - de API register_* . Eles podem também ser - com o uso da função API unregister_* . - - - Para os plugins que são registrados no tempo de execução, o nome da(s) função(ões) de plugin - não têm que seguir a convenção de aparência. - - - Se um plugin depende de alguma funcionalidade fornecida por um outro plugin (como é o caso com alguns - plugins embutidos com a Smarty), - então a forma apropriada para ler o plugin necessário é esta: - - -require_once $smarty->_get_plugin_filepath('function', 'html_options'); - - Como uma regra geral, o objeto da Smarty é sempre passado para os plugins como o último parâmetro - (com duas exceções: modificadores não passam o objeto da Smarty em tudo e blocks passam - &$repeat depois do objeto da Smarty - para manter compatibilidade a antigas - versões da Smarty). - - - - Funções de Template - - - void smarty_function_name - array $params - object &$smarty - - - - Todos os atributos passados para as funções de template a - partir do template estão contidas em - $params como um array associativo. Ou acessa esses valores - diretamente i.e $params['start'] ou usa - extract($params) para - importá-los para dentro da tabela símbolo. - - - A saída (valor de retorno) da função será substituída no lugar da tag da função no template - (a função fetch, por exemplo). Alternativamente, a função pode simplesmente executar - alguma outra tarefa sem ter alguma saída - (a função assign). - - - Se a função precisa passar valores a algumas variáveis para o template ou utilizar alguma outra funcionalidade - fornecida com a Smarty, ela pode usar - o objeto $smarty fornecido para fazer isso. - - - Veja também: - register_function(), - unregister_function(). - - - - função de plugin com saída - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: function.eightball.php - * Type: function - * Name: eightball - * Purpose: outputs a random magic answer - * ------------------------------------------------------------- - */ -function smarty_function_eightball($params, &$smarty) -{ - $answers = array('Yes', - 'No', - 'No way', - 'Outlook not so good', - 'Ask again soon', - 'Maybe in your reality'); - - $result = array_rand($answers); - return $answers[$result]; -} -?> - - - - que pode ser usada no template da seguinte forma: - - -Pergunta: Nós sempre teremos tempo para viajar? -Resposta: {eightball}. - - - função de plugin sem saída - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: function.assign.php - * Type: function - * Name: assign - * Purpose: assign a value to a template variable - * ------------------------------------------------------------- - */ -function smarty_function_assign($params, &$smarty) -{ - extract($params); - - if (empty($var)) { - $smarty->trigger_error("assign: missing 'var' parameter"); - return; - } - - if (!in_array('value', array_keys($params))) { - $smarty->trigger_error("assign: missing 'value' parameter"); - return; - } - - $smarty->assign($var, $value); -} -?> - - - - - Modifiers - - Modificadores são funções que são aplicadas a uma variável no template antes dela ser mostrada - ou usada em algum outro contexto. - Modificadores podem ser encadeados juntos. - - - - mixed smarty_modifier_name - mixed $value - [mixed $param1, ...] - - - - O primeiro parâmetro para o plugin midificador é o valor em que o modificador é suposto - operar. O resto dos parâmetros podem ser opcionais, - dependendo de qual tipo de operação é para - ser executada. - - - O modificador deve retornar o resultado de seu processamento. - - - Veja também: - register_modifier(), - unregister_modifier(). - - - Plugin modificador simples - - Este plugin basiamente é um alias de uma - função do PHP. Ele não tem nenhum parâmetro adicional. - - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: modifier.capitalize.php - * Type: modifier - * Name: capitalize - * Purpose: capitalize words in the string - * ------------------------------------------------------------- - */ -function smarty_modifier_capitalize($string) -{ - return ucwords($string); -} -?> - - - - Plugin modificador mais complexo - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: modifier.truncate.php - * Type: modifier - * Name: truncate - * Purpose: Truncate a string to a certain length if necessary, - * optionally splitting in the middle of a word, and - * appending the $etc string. - * ------------------------------------------------------------- - */ -function smarty_modifier_truncate($string, $length = 80, $etc = '...', - $break_words = false) -{ - if ($length == 0) - return ''; - - if (strlen($string) > $length) { - $length -= strlen($etc); - $fragment = substr($string, 0, $length+1); - if ($break_words) - $fragment = substr($fragment, 0, -1); - else - $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment); - return $fragment.$etc; - } else - return $string; -} -?> - - - - Block Functions - - - void smarty_block_name - array $params - mixed $content - object &$smarty - - - - Funções de Block são funções da forma: {func} .. {/func}. Em outras palavras, ele enclausura - um bloco de template e opera no conteúdo deste bloco. Funções de Block tem precedência sobre - funções customizadas com mesmo nome, - assim, você não pode ter ambas, função customizável {func} e - função de Bloco {func} .. {/func}. - - - Por definição a implementação de sua função é chamada duas vezes pela Smarty: uma vez pela tag de abertura, - e outra pela tag de fechamento - (veja &$repeat abaixo para como mudar isto). - - - Apenas a tag de abertura da função de bloco pode ter atributos. - Todos os atributos passados para as funções de - template estão contidos em $params como um array associativo. Você pode ou acessar - esses valores diretamente, i.e. $params['start'] - ou usar extract($params) - para importá-los para dentro da tabela símbolo. Os atributos da tag de - abertura são também acessíveis a sua função - quando processando a tag de fechamento. - - - O valor da variável $content - depende de que se sua função é chamada pela tag de - fechamento ou de abertura. Caso seja a de abertura, ele será - null, se for a de fechamento - o valor será do conteúdo do bloco de template. - Note que o bloco de template já terá sido processado pela - Smarty, então tudo que você receberá é saída do template, não o template original. - - - - O parâmetro &$repeat é passado por - referência para a função de implementação - e fornece uma possibilidade para ele controlar quantas - vezes o bloco é mostrado. Por definição - $repeat é true na primeira chamada da block-function - (a tag de abertura do bloco) e false - em todas as chamadas subsequentes à função de bloco - (a tag de fechamento do bloco). Cada vez que a - implementação da função retorna com o &$repeat - sendo true, o conteúdo entre {func} .. {/func} é avaliado - e a implementação da função é chamada novamente com - o novo conteúdo do bloco no parâmetro $content. - - - - - Se você tem funções de bloco aninhadas, é possível - descobrir qual é a função de bloco pai acessando - a variável $smarty->_tag_stack. Apenas faça um var_dump() - nela e a estrutura estaria visível. - - - See also: - register_block(), - unregister_block(). - - - função de bloco - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: block.translate.php - * Type: block - * Name: translate - * Purpose: translate a block of text - * ------------------------------------------------------------- - */ -function smarty_block_translate($params, $content, &$smarty) -{ - if (isset($content)) { - $lang = $params['lang']; - // do some intelligent translation thing here with $content - return $translation; - } -} - - - - Funções Compiladoras - - Funções compiladoras só são chamadas durante a compilação do template. - Elas são úteis para injeção de código PHP ou conteúdo estático time-sensitive - dentro do template. Se há ambos, uma função - compiladora e uma função customizável - registrada sob o mesmo nome, a função compiladora tem precedência. - - - - mixed smarty_compiler_name - string $tag_arg - object &$smarty - - - - À função compiladora são passados dois parâmetros: - a tag string de argumento da tag - basicamente, tudo a partir - do nome da função até o delimitador de fechamento, e o objeto da Smarty. É suposto que retorna o código PHP - para ser injetado dentro do template compilado. - - - See also - register_compiler_function(), - unregister_compiler_function(). - - - função compiladora simples - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: compiler.tplheader.php - * Type: compiler - * Name: tplheader - * Purpose: Output header containing the source file name and - * the time it was compiled. - * ------------------------------------------------------------- - */ -function smarty_compiler_tplheader($tag_arg, &$smarty) -{ - return "\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';"; -} -?> - - Esta função pode ser chamada em um template da seguinte forma: - - -{* esta função é executada somente no tempo de compilação *} -{tplheader} - - O código PHP resultante no template compilado seria algo assim: - - -<php -echo 'index.tpl compiled at 2002-02-20 20:02'; -?> - - - - - Prefiltros/Posfiltros - - Plugins Prefilter e postfilter são muito similares - em conceito; onde eles diferem é na execução -- mais - precisamente no tempo de suas execuções. - - - - string smarty_prefilter_name - string $source - object &$smarty - - - - Prefilters são usados para processar o fonte do template - imediatamente antes da compilação. O primeiro parâmetro da - função de prefilter é o fonte do template, possivelmente modificado por alguns outros prefilters. O Plugin - é suposto retornar o fonte modificado. Note que este fonte não é salvo em lugar nenhum, ele só é usado para - a compilação. - - - - string smarty_postfilter_name - string $compiled - object &$smarty - - - - Postfilters são usados para processar a saída compilada do template (o código PHP) imediatamente após - a compilação ser feita e antes do template compilado ser - salvo no sistema de arquivo. O primeiro parâmetro - para a função postfilter é o código do template compilado, - possivelmente modificado por outros postfilters. - O plugin é suposto retornar a versão modificada deste código. - - - Plugin prefilter - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: prefilter.pre01.php - * Type: prefilter - * Name: pre01 - * Purpose: Convert html tags to be lowercase. - * ------------------------------------------------------------- - */ - function smarty_prefilter_pre01($source, &$smarty) - { - return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source); - } -?> - - - - Plugin postfilter - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: postfilter.post01.php - * Type: postfilter - * Name: post01 - * Purpose: Output code that lists all current template vars. - * ------------------------------------------------------------- - */ - function smarty_postfilter_post01($compiled, &$smarty) - { - $compiled = "<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" . $compiled; - return $compiled; - } -?> - - - - Filtros de saída - - Filtros de saída operam na saída do template, depois que o template é lido e executado, mas - antes a saída é mostrada. - - - - string smarty_outputfilter_name - string $template_output - object &$smarty - - - - O primeiro parâmetro para a função do filtro de saída é a saída do template que precisa ser processada, e - o segundo parâmetro é a instância da Smarty invocando o plugin. - O plugin deve fazer o precessamento e - retornar os resultados. - - - output filter plugin - -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: outputfilter.protect_email.php - * Type: outputfilter - * Name: protect_email - * Purpose: Converts @ sign in email addresses to %40 as - * a simple protection against spambots - * ------------------------------------------------------------- - */ - function smarty_outputfilter_protect_email($output, &$smarty) - { - return preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', - '$1%40$2', $output); - } - - - - - Recursos (Resources) - - Os plugins de Recursos são como uma forma genérica de fornecer códigos fontes de template - ou componentes de script PHP para a Smarty. Alguns exemplos de recursos: - banco de dados, LDAP, memória compartilhada, sockets, e assim por diante. - - - - Há um total de 4 funções que precisam estar registradas - para cada tipo de recurso. Cada função receberá - o recurso requisitado como o primeiro parâmetro e o objeto da Smarty como o último parâmetro. O resto - dos parâmetros dependem da função. - - - - - bool smarty_resource_name_source - string $rsrc_name - string &$source - object &$smarty - - - bool smarty_resource_name_timestamp - string $rsrc_name - int &$timestamp - object &$smarty - - - bool smarty_resource_name_secure - string $rsrc_name - object &$smarty - - - bool smarty_resource_name_trusted - string $rsrc_name - object &$smarty - - - - - A primeira função deve devolver o recurso. Seu segundo parâmetro é uma variável passada por - referência onde o resultado seria armazenado. - A função deve retornar true se - ela está apta a devolver com sucesso o recurso e - caso contrário retorna false. - - - - A segunda função deve devolver a última modificação do - recurso requisitado (como um timestamp Unix). - O segundo parâmetro é uma variável passada por referência onde o timestamp seria armazenado. - A função deve retornar true - se o timestamp poderia ser determinado com sucesso, - e caso contrário retornaria false. - - - - A terceira função deve retornar true ou - false, dependendo do recurso requisitado - está seguro ou não. Esta função é usada - apenas para recursos de template mas ainda assim seria definida. - - - - A quarta função deve retornar true - ou false, dependendo - do recurso requisitado ser confiável ou não. - Esta função é usada apenas para componentes de - script PHP requisitados pelas tags include_php ou - insert com o atributo src. - Entretanto, ela ainda assim mesmo seria definida para os recursos de template. - - - Veja também: - register_resource(), - unregister_resource(). - - - Plugin resource (recurso) - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: resource.db.php - * Type: resource - * Name: db - * Purpose: Fetches templates from a database - * ------------------------------------------------------------- - */ -function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty) -{ - // do database call here to fetch your template, - // populating $tpl_source - $sql = new SQL; - $sql->query("select tpl_source - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_source = $sql->record['tpl_source']; - return true; - } else { - return false; - } -} - -function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty) -{ - // faz o banco de dados chamar aqui para preencher $tpl_timestamp. - $sql = new SQL; - $sql->query("select tpl_timestamp - from my_table - where tpl_name='$tpl_name'"); - if ($sql->num_rows) { - $tpl_timestamp = $sql->record['tpl_timestamp']; - return true; - } else { - return false; - } -} - -function smarty_resource_db_secure($tpl_name, &$smarty) -{ - // assume que todos os templates são seguros - return true; -} - -function smarty_resource_db_trusted($tpl_name, &$smarty) -{ - // não usado para templates -} -?> - - - - Inserts - - Plugins Insert são usados para implementar funções que são invocadas por tags - insert - no template. - - - - string smarty_insert_name - array $params - object &$smarty - - - - O primeiro parâmetro para a função é um array - associativo de atributos passados para o - insert. Ou acessa esses valores diretamente, - i.e. $params['start'] ou usa - extract($params) para importá-los para dentro da tabela símbolo. - - - A função insert deve retornar o - resultado que será substituído no lugar da tag - insert no template. - - - Plugin insert - -<?php -/* - * Smarty plugin - * ------------------------------------------------------------- - * File: insert.time.php - * Type: time - * Name: time - * Purpose: Inserts current date/time according to format - * ------------------------------------------------------------- - */ -function smarty_insert_time($params, &$smarty) -{ - if (empty($params['format'])) { - $smarty->trigger_error("insert time: missing 'format' parameter"); - return; - } - - $datetime = strftime($params['format']); - return $datetime; -} -?> - - -
-