underpop

http://underpop.online.fr 2007-06-18  

Documentação do Smarty Templates

Foi incluído no XBR toda a documentação do Smarty Template.

Esta é sem dúvida uma das perguntas mais frequentes nas listas de discussões sobre PHP: como eu faço meus scripts em PHP independentes do layout? O PHP é vendido como sendo uma "linguagem de script embutida no HTML", após escrever alguns projetos que misturam HTML e PHP naturalmente vem uma ideia de que a separação da forma e conteúdo é uma boa prática [TM]. Além disso, em muitas empresas os papéis de designer e programador são separados. Consequentemente, a busca por um sistema de templates continua.

Na nossa empresa por exemplo, o desenvolvimento de uma aplicação é feito da seguinte maneira: Após a documentação necessária estar pronta, o designer faz o esboço da interface e entrega ao programador. O programador implementa as regras de negócio no PHP e usa o esboço da interface para criar o esqueleto dos templates. O projeto então está nas mãos da pessoa responsável pelo layout HTML da página que então transforma o esboço em um layout realmente funcional. O projeto talvez vá e volte entre programação/designer HTML várias vezes. Porém, é importante ter um bom suporte à templates porque os programadores não querem ter que ficar mexendo com HTML e não querem que os designers estraguem seus códigos PHP. Os designers precisam de ajuda para alterar os arquivos de configuração, blocos dinâmicos e outros problemas relacionados à interface usada, mas eles não querem ocupar-se com as complexidades da linguagem de programação PHP.

Analisando muitas das soluções de templates disponíveis para PHP hoje em dia, a maioria somente disponibilizada uma forma rudimentar de substituição de variáveis dentro dos templates e trabalham de forma limitada com as funcionalidades dos blocos dinâmicos. Mas nossas necessidades necessitam de um pouco mais do que isso. Nós não queríamos que programadores mexendo com layout em HTML, mas isso é praticamente inevitável. Por exemplo, se um designer quiser que as cores de fundo se alternam em blocos dinâmicos, isso tem que ser feito pelo programador antecipadamente. Nós também precisamos que os designers possam usar seus próprios arquivos de configuração, e usar as variáveis definidas nestes arquivos em seus templates. E a lista de necessidades continua...

Nós começamos à escrever as especificações para um sistema de templates por volta de 1999. Após o término das especificações, nós começamos a escrever um sistema de template em C que esperávamos ser aceito para rodar com o PHP. Não só esbarramos em muitas barreiras técnicas, como também houve um enorme debate sobre o que exatamente um sistema de template deveria ou não fazer. À partir desta experiência, nós decidimos que o sistema de template fosse escrito para ser uma classe do PHP, para que qualquer um usa-se da forma que lhe fosse mais conveniente, então nós escrevemos um sistema que fazia exatamente, foi aí que surgiu o SmartTemplate (obs: esta classe nunca foi enviada ao público). Foi uma classe que fez quase tudo que nós queríamos: substituição de variáveis, suporte à inclusão de outros templates, integração com arquivos de configuração, código PHP embutido, funcionalidades 'if' limitada e blocos dinâmicos muito mais robustos que poderiam ser aninhados muitas vezes. Foi tudo feito usando expressões reguladores e códigos confusos, como diríamos, impenetrável. Era um sistema também extremamente lento em grandes aplicativos por causa de todo o trabalho que era feito pelas expressões regulares e o 'parsing'(interpretação) em cada chamada ao aplicativo. O maior problema do ponto de vista de um programador foi o espantoso trabalho que era necessário para configurar e processar os blocos dinâmicos dos templates. Como faríamos esse sistema ser simples de usar?

Foi então que veio a visão do que hoje é conhecido como Smarty. Nós sabemos o quão rápido é um código PHP sem o sobrecarregamento de um sistema de templates. Nós também sabemos quão meticuloso e assustador é a linguagem PHP aos olhos de um designer atual, e isso tudo poderia ser mascarado usando uma sintaxe simples nos templates. Então o que acontece se nós combinarmos essas duas forças? Assim, nasceu o Smarty

 

 

 

Smarty Templates

A ferramenta para compilar modelos no XOOPS Cube


Índice
Prefácio
I. Iniciando
1. O que é o Smarty?
2. Instalação
Requisitos
Instalação Básica
Estendendo a configuração
II. Smarty para Designers de Template
3. Sintaxe Básica
Comentários
Funções
Atributos
Colocando Variáveis em Aspas Duplas
Matemática
Escapando da interpretação do Smarty
4. Variáveis
Variáveis definidas do PHP
Variáveis carregadas de arquivos de configuração
A variável reservada {$smarty}
5. Modificadores de variáveis
capitalize
count_characters
cat
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower
nl2br
regex_replace
replace
spacify
string_format
strip
strip_tags
truncate
upper
wordwrap
6. Combinando Modificadores
7. Funções internas
capture
config_load
foreach,foreachelse
include
include_php
insert
if,elseif,else
ldelim,rdelim
literal
php
section,sectionelse
strip
8. Funções Personalizadas
assign
counter
cycle
debug
eval
fetch
html_checkboxes
html_image
html_options
html_radios
html_select_date
html_select_time
html_table
math
mailto
popup_init
popup
textformat
9. Arquivos de Configuração
10. Debugging Console
III. Smarty para Programadores
11. Constantes
SMARTY_DIR
12. Variáveis
$template_dir
$compile_dir
$config_dir
$plugins_dir
$debugging
$debug_tpl
$debugging_ctrl
$global_assign
$undefined
$autoload_filters
$compile_check
$force_compile
$caching
$cache_dir
$cache_lifetime
$cache_handler_func
$cache_modified_check
$config_overwrite
$config_booleanize
$config_read_hidden
$config_fix_newlines
$default_template_handler_func
$php_handling
$security
$secure_dir
$security_settings
$trusted_dir
$left_delimiter
$right_delimiter
$compiler_class
$request_vars_order
$request_use_auto_globals
$compile_id
$use_sub_dirs
$default_modifiers
$default_resource_type
13. Métodos
append
append_by_ref
assign
assign_by_ref
clear_all_assign
clear_all_cache
clear_assign
clear_cache
clear_compiled_tpl
clear_config
config_load
display
fetch
get_config_vars
get_registered_object
get_template_vars
is_cached
load_filter
register_block
register_compiler_function
register_function
register_modifier
register_object
register_outputfilter
register_postfilter
register_prefilter
register_resource
trigger_error
template_exists
unregister_block
unregister_compiler_function
unregister_function
unregister_modifier
unregister_object
unregister_outputfilter
unregister_postfilter
unregister_prefilter
unregister_resource
14. Caching
Configurando Caching
Multiple Caches Per Page
Grupos de Cache
Controlling Cacheability of Plugins' Output
15. Advanced Features
Objetos
Prefilters
Postfilters
Output Filters (Filtros de Saída)
Função Manipuladora de Cache
Recursos (Resources)
16. Extendendo a Smarty com Plugins
Como os Plugins Funcionam
Convenções de Aparência
Escrevendo Plugins
Funções de Template
Modifiers
Block Functions
Funções Compiladoras
Prefiltros/Posfiltros
Filtros de saída
Recursos (Resources)
Inserts
IV. Apêndices
17. Localização de Erros
Erros do Smarty/PHP
18. Dicas & Truques
Manipulação de Variável Vazia
Manipulação do valor padrão de uma Variável
Passando a variável titulo para o template de cabeçalho
Datas
WAP/WML
Templates componentizados
Ofuscando endereços de E-mail
19. Recursos
20. BUGS


Marcadores: ,