Smarty - a ferramenta para compilar templates para PHP | ||
---|---|---|
Anterior | Capítulo 7. Funções internas | Próxima |
Nome do Atributo | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
name | string | Sim | n/d | O nome da função insert (insert_name) |
assign | string | Não | n/d | O nome da variável que irá receber a saída |
script | string | Não | n/d | O nome de um script php que será incluido antes que a função insert seja chamada |
[var ...] | [var type] | Não | n/d | 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.
Digamos que você tenha um template com um banner no topo da página. O banner pode conter uma mistura de html, imagens, flash, etc. Assim nós não podemos usar um link estatico aqui, e nós não queremos que este conteúdo fique no cache junto com a página. E aí que entra a tag insert: o template conhece os valores #banner_location_id# e #site_id# (obtidos de um arquivo de configuração), e precisa chamar uma função para obter o conteúdo do banner.
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 no 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ê passar 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ê passar 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 à variável $trusted_dir. Quando a segurança esta ativada, o script deve estar no local definido na variável $trusted_dir.
O objeto Smarty é passado como segundo argumento. Deste modo você 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, previsões do tempo, resultados de pesquisa, áreas de opnião do usuário, etc.