Capítulo 7. Funções internas

Índice
capture
config_load
foreach,foreachelse
include
include_php
insert
if,elseif,else
ldelim,rdelim
literal
php
section,sectionelse
strip

O Smarty contém várias funções internas. Funções internas são parte integral da linguagem de template. Você não pode criar funções personalizadas com o mesmo nome de uma função interna, e também não pode modificar funções internas.

capture

Nome do Atributo Tipo Obrigatório 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 partir 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.

Cuidado

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.

Exemplo 7-1. capturando conteúdo do template

{* nós não queremos mostrar uma linha de tabela à não ser que haja conteúdo para ela *}
{capture name=banner}
{include file="pegar_banner.tpl"}
{/capture}
{if $smarty.capture.banner ne ""}
 <tr>
 <td>
 {$smarty.capture.banner}
 </td>
 </tr>
{/if}