Universidade Federal dos Vales
    Jequitinhonha e Mucuri
   Sistemas de Informação


       Apresentação à
      Disciplina de E.W.


    Tema: Smarty
       Lorena C. De Souza
Índice Smarty
1 – Apresentação
      1.1 Templete
      1.2 Classe Templete
      1.3 Classe Templete Smarty
      1.4 Objetivos
      1.5 Visões
2 – Instalação
3 – Sintaxe Básica
4 – Exemplos Práticos
Smarty
●

●

    ●

    ●   Qual a definição de Templete?
●
Smarty
●
    Qual a definição de Templete?

Um documento sem conteúdo, com apenas a apresentação visual
(apenas cabeçalhos por exemplo) e instruções sobre onde e qual
tipo de conteúdo deve entrar a cada parcela da apresentação —
por exemplo conteúdos que podem aparecer no início e conteúdos
que só podem aparecer no final.
●
Smarty

●
●

         THU
Smarty

    Agora qual a definição de Classe Templete?

●
Smarty

    Agora qual a definição de Classe Templete?

 A Classe Templete tem o principal propósito manter o
código HTML em arquivos externos que ficam
completamente livres de código PHP. E dessa forma,
manter a lógica de programação (PHP) separada da
estrutura visual (HTML ou XML, CSS, etc).
●
Smarty

 Com isso, gera duas “extremidades” de
desenvolvimento:
                          Html
● A parte da Visão          Html
                          CSS
                            CSS
                                   PHP
                                    PHP
● A parte dos Controles
Smarty
Sem a Classe Template, o que tem é uma mistura de php, com
html, css e etc.

               <?php

                    echo "<div>
                             <p> Ol&aacute; Mundo!</p>
                        </div>";
               ?>
Smarty
Com a Classe Template, o que tem é uma organização/separação
entre os componentes de desenvolvimento da aplicação web.


<html>                           <?php
    <body>                           require("Template.class.php");
        <p>Olá Mundo!</p>            $tpl = new Template("hello.html");
    </body>                          $tpl->show();
</html>                          ?>
Smarty
Características específicas da Classe templete
Smarty:

 ●   Engine oficializada pela php.net
 ●

 ●   Ele é extremamente rápido.
 ●

 ●   Sem elevadas interpretações de template, compila
     uma vez.
 ●

 ●   Só recompilará os arquivos de template que foram
     alterados.
 ●

 ●   Suporte de caching embutido
 ●


 ●
     Arquitetura de Plugin
Smarty

Vantagens:
  Facilidade pra criação uma vez aprendido;

  Organização;

  Manutenção de código;

  Otimização do desenvolvimento do projeto – dois
ambientes.
Smarty - Instalação

Requisitos:
 Servidor Apache

 PHP

 Biblioteca do Smarty
Smarty - Instalação
Passos:
    Faça o download do Smarty
    Descomprima todas as pastas.

    Verifique uma pasta "demo"

    Prepare de maneira a deixar visível ao www­data
●

●   Dê permissão ao diretório "templates_c".
Smarty - Instalação
Árvore padrão de diretório do Smarty está organizada da seguinte 
●


maneira:
 ● / ­ Na raiz estarão os arquivos de lógica (.PHP).

 ● /configs  ­  Arquivos  de  configuração.  É  possível  setar  por  exemplo, 


   um  título  padrão  para  todo  seu  sistema,  e  utilizá­lo  nos  arquivos  de 
   templete.
 ● /libs ­ Bibliotecas do Smarty, onde também fica localizada a classe 


   principal.
 ● /templetes  ­  Diretório  padrão  para  localização  dos  templetes.  São 


   arquivos de interface com o usuário.
 ● /templetes_c  ­  Diretório  para  cache.  (Deve  estar  com  permissão  de 


   escrita.)
Smarty – Sintaxe
●Todas as tags de template do Smarty contém delimitadores. Por padrão, 
estes delimitadores são { e }, mas eles podem ser alterados.
●

● Para o Smarty, todo o conteúdo fora dos delimitadores é mostrado como 
conteúdo estático, ou inalterável. Quando o Smarty encontra tags de 
template, ele tenta interpretá­las, e então mostra a saída apropriada em 
seu lugar.
Smarty – Sintaxe
●   Comentário
      ●   {* Isto é um comentário *}

●   Função, Variáveis e Atributos
     ● Funções Inernas: {include file=$arquivoInclude}

     ● Funções Inernas: {config_load file="cores.conf"}

     ● Funções Inernas: {if $enfase_nome}

     ● Funções Personalizadas: {html_options}

     ● Funções Personalizadas: {html_select_date display_days=yes}

      ●

●   Escapando de Interpretação do Smarty
      ● {ldelim}$Name | upper{rdelim}
Smarty – Sintaxe
●   Variáveis
     ●

     ●   Variável definida do php: 
              ● {$Nome}




     ●   Variável composta definida do php:
              ● {$Contatos[row].Telefone}

             ●

     ●   Variável de configuração: 
                 <body bgcolor="{#cordefundo}">
                 ●

     ●   Variável reservada: 
               ● $smarty
Smarty – Sintaxe
●   Variável Reservada $smarty
    ●   Essa variável reservada é utilizada para acessar variáveis especiais do 
        template. Como por exemplo: as variáveis request get, post, cookies, 
        server, enviroment e session. Exemplo:
    ●

         ●   Se tem a seguinte URL http://www.domain.com/index.php?page=foo 
             ●

                 ●
Smarty – Sintaxe
●   Variável Reservada $smarty
    ●   Essa variável reservada é utilizada para acessar variáveis especiais do 
        template. Como por exemplo: as variáveis request get, post, cookies, 
        server, enviroment e session. Exemplo:
    ●

         ●   Se tem a seguinte URL http://www.domain.com/index.php?page=foo 
             ●

                 ●   Com {$smarty.get.page} mostra o valor de page da URL;
    ●

                 ●   Para {$smarty.post.page} mostra a variável ”page” de um 
                     formulário. (POST)
    ●

                 ●   Para {$smarty.cookies.username} mostra o valor do cookie 
                     "username.
Smarty – Sintaxe
 Variável Reservada $smarty
●


●

    ●   Para {$smarty.server.SERVER_NAME} mostra a variável do servidor 
        "SERVER_NAME".
●

    ●   Para {$smarty.env.PATH} mostra a variável de ambiente do sistema 
        "PATH".
●

    ●   Para {$smarty.session.id} mostra a variável ”id” de session do php.
Smarty – Sintaxe
Outras sintaxe reservadas do Smarty:
●

●

    ●   {$smarty.now} – retorna o timestamp atual.
    ●

    ●   {$smarty.capture} – captura a saída.
    ●

    ●   {$smarty.template} ­ contém o nome do template atual.
        {$smarty.template}
    ●

    ●   {$smarty.section}, {$smarty.foreach}
    ●

    ●   {$smarty.ldelim} e {$smarty.rdelim}: delimitador esquerdo e direito.
Smarty – Sintaxe
Modificadores de Variáveis
●

    ●   Para aplicá­lo deve usar a seguinte sintaxe: 
               ● Valor  |  modificador

    ●   Por exemplo:
        ●

        ●   {$topico | truncate:40:"..."}         {$articleTitle | capitalize}
        ●

        ●   {$articleTitle | count_characters}    {$articleTitle | cat:" yesterday."}
        ●

        ●
Smarty – Sintaxe
Modificadores de Variáveis
●

    ●   Para aplicá­lo deve usar a seguinte sintaxe: 
               ● Valor  |  modificador

    ●   Por exemplo:
        ●

        ●   {$topico | truncate:40:"..."}         {$articleTitle | capitalize}
        ●

        ●   {$articleTitle | count_characters}    {$articleTitle | cat:" yesterday."}
        ●

        ●   {$smarty.now | date_format:"%H:%M:%S"} 
        ●

        ●   {$articleTitle | replace:"Garden":"Vineyard"}
        ●

        ●   {$articleTitle|count_paragraphs}
Smarty – Sintaxe
●   Caching
            ●   Usado  para  aumentar  a  velocidade  de  chamada  para  display()  ou 
                fetch() salvando isso num arquivo de saída. 
            ●   Pode  fazer  coisas  tremendamente  rápidas,  especialmente  templetes 
                com longo tempo computacional.

            ●   Desde que templetes sejam dinâmicos, é importante 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 
                (hora),  isso  funciona  bem  para  cache  dessa  forma.  Já  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.
    ●   Caching precisa ser configurado.
Smarty – Sintaxe
●   Exemplo de caching

            require('Smarty.class.php');
            $smarty = new Smarty;
            $smarty->caching = true;
            $smarty->display('index.tpl');



Multiple Chaches per Page
Smarty – Sintaxe
●   Plugins
●   Plugins são determinadas funcionalidades com 
    características próprias à implementar junto ao Smarty.
●

●   Estes sempre só são lidos quando requisitados. 
●

●   E cada plugin é lido apenas uma vez, mesmo se você tem 
    várias instâncias diferentes do Smarty rodando na mesma 
    requisição.
●

●   O diretório de plugins pode ser uma string contendo um caminho ou um 
    array contendo multiplos caminhos. Para instalar um plugin, só coloque 
    em um dos diretórios e a Smarty irá usá­lo automaticamente. 
Smarty – Sintaxe
    Convenções de Plugins
●   Arquivos:                    tipo.nome.php

●   Onde tipo: 
                  ●   function
                  ●   modifier
                  ●   block
                  ●   compiler
                  ●   Prefilter / postfilter / outputfilter
                  ●   resource
                  ●   Insert

    ●   function.html_select_date.php, resource.db.php, modifier.spacify.php.
Comentários?
  Dúvidas?
Obrigada!!

Smarty + PHP

  • 1.
    Universidade Federal dosVales Jequitinhonha e Mucuri Sistemas de Informação Apresentação à Disciplina de E.W. Tema: Smarty Lorena C. De Souza
  • 2.
    Índice Smarty 1 –Apresentação 1.1 Templete 1.2 Classe Templete 1.3 Classe Templete Smarty 1.4 Objetivos 1.5 Visões 2 – Instalação 3 – Sintaxe Básica 4 – Exemplos Práticos
  • 3.
    Smarty ● ● ● ● Qual a definição de Templete? ●
  • 4.
    Smarty ● Qual a definição de Templete? Um documento sem conteúdo, com apenas a apresentação visual (apenas cabeçalhos por exemplo) e instruções sobre onde e qual tipo de conteúdo deve entrar a cada parcela da apresentação — por exemplo conteúdos que podem aparecer no início e conteúdos que só podem aparecer no final. ●
  • 5.
  • 6.
    Smarty Agora qual a definição de Classe Templete? ●
  • 7.
    Smarty Agora qual a definição de Classe Templete? A Classe Templete tem o principal propósito manter o código HTML em arquivos externos que ficam completamente livres de código PHP. E dessa forma, manter a lógica de programação (PHP) separada da estrutura visual (HTML ou XML, CSS, etc). ●
  • 8.
    Smarty Com isso,gera duas “extremidades” de desenvolvimento: Html ● A parte da Visão Html CSS CSS PHP PHP ● A parte dos Controles
  • 9.
    Smarty Sem a ClasseTemplate, o que tem é uma mistura de php, com html, css e etc. <?php echo "<div> <p> Ol&aacute; Mundo!</p> </div>"; ?>
  • 10.
    Smarty Com a ClasseTemplate, o que tem é uma organização/separação entre os componentes de desenvolvimento da aplicação web. <html> <?php <body> require("Template.class.php"); <p>Olá Mundo!</p> $tpl = new Template("hello.html"); </body> $tpl->show(); </html> ?>
  • 11.
    Smarty Características específicas daClasse templete Smarty: ● Engine oficializada pela php.net ● ● Ele é extremamente rápido. ● ● Sem elevadas interpretações de template, compila uma vez. ● ● Só recompilará os arquivos de template que foram alterados. ● ● Suporte de caching embutido ● ● Arquitetura de Plugin
  • 12.
    Smarty Vantagens: Facilidadepra criação uma vez aprendido; Organização; Manutenção de código; Otimização do desenvolvimento do projeto – dois ambientes.
  • 13.
    Smarty - Instalação Requisitos: Servidor Apache PHP Biblioteca do Smarty
  • 14.
    Smarty - Instalação Passos: Faça o download do Smarty Descomprima todas as pastas. Verifique uma pasta "demo" Prepare de maneira a deixar visível ao www­data ● ● Dê permissão ao diretório "templates_c".
  • 15.
    Smarty - Instalação Árvore padrão de diretório do Smarty está organizada da seguinte  ● maneira: ● / ­ Na raiz estarão os arquivos de lógica (.PHP). ● /configs  ­  Arquivos  de  configuração.  É  possível  setar  por  exemplo,  um  título  padrão  para  todo  seu  sistema,  e  utilizá­lo  nos  arquivos  de  templete. ● /libs ­ Bibliotecas do Smarty, onde também fica localizada a classe  principal. ● /templetes  ­  Diretório  padrão  para  localização  dos  templetes.  São  arquivos de interface com o usuário. ● /templetes_c  ­  Diretório  para  cache.  (Deve  estar  com  permissão  de  escrita.)
  • 16.
  • 17.
    Smarty – Sintaxe ● Comentário ● {* Isto é um comentário *} ● Função, Variáveis e Atributos ● Funções Inernas: {include file=$arquivoInclude} ● Funções Inernas: {config_load file="cores.conf"} ● Funções Inernas: {if $enfase_nome} ● Funções Personalizadas: {html_options} ● Funções Personalizadas: {html_select_date display_days=yes} ● ● Escapando de Interpretação do Smarty ● {ldelim}$Name | upper{rdelim}
  • 18.
    Smarty – Sintaxe ● Variáveis ● ● Variável definida do php:  ● {$Nome} ● Variável composta definida do php: ● {$Contatos[row].Telefone} ● ● Variável de configuração:  <body bgcolor="{#cordefundo}"> ● ● Variável reservada:  ● $smarty
  • 19.
    Smarty – Sintaxe ● Variável Reservada $smarty ● Essa variável reservada é utilizada para acessar variáveis especiais do  template. Como por exemplo: as variáveis request get, post, cookies,  server, enviroment e session. Exemplo: ● ● Se tem a seguinte URL http://www.domain.com/index.php?page=foo  ● ●
  • 20.
    Smarty – Sintaxe ● Variável Reservada $smarty ● Essa variável reservada é utilizada para acessar variáveis especiais do  template. Como por exemplo: as variáveis request get, post, cookies,  server, enviroment e session. Exemplo: ● ● Se tem a seguinte URL http://www.domain.com/index.php?page=foo  ● ● Com {$smarty.get.page} mostra o valor de page da URL; ● ● Para {$smarty.post.page} mostra a variável ”page” de um  formulário. (POST) ● ● Para {$smarty.cookies.username} mostra o valor do cookie  "username.
  • 21.
    Smarty – Sintaxe  Variável Reservada $smarty ● ● ● Para {$smarty.server.SERVER_NAME} mostra a variável do servidor  "SERVER_NAME". ● ● Para {$smarty.env.PATH} mostra a variável de ambiente do sistema  "PATH". ● ● Para {$smarty.session.id} mostra a variável ”id” de session do php.
  • 22.
    Smarty – Sintaxe Outras sintaxe reservadas do Smarty: ● ● ● {$smarty.now} – retorna o timestamp atual. ● ● {$smarty.capture} – captura a saída. ● ● {$smarty.template} ­ contém o nome do template atual. {$smarty.template} ● ● {$smarty.section}, {$smarty.foreach} ● ● {$smarty.ldelim} e {$smarty.rdelim}: delimitador esquerdo e direito.
  • 23.
    Smarty – Sintaxe Modificadores de Variáveis ● ● Para aplicá­lo deve usar a seguinte sintaxe:  ● Valor  |  modificador ● Por exemplo: ● ● {$topico | truncate:40:"..."} {$articleTitle | capitalize} ● ● {$articleTitle | count_characters}  {$articleTitle | cat:" yesterday."} ● ●
  • 24.
    Smarty – Sintaxe Modificadores de Variáveis ● ● Para aplicá­lo deve usar a seguinte sintaxe:  ● Valor  |  modificador ● Por exemplo: ● ● {$topico | truncate:40:"..."} {$articleTitle | capitalize} ● ● {$articleTitle | count_characters}  {$articleTitle | cat:" yesterday."} ● ● {$smarty.now | date_format:"%H:%M:%S"}  ● ● {$articleTitle | replace:"Garden":"Vineyard"} ● ● {$articleTitle|count_paragraphs}
  • 25.
    Smarty – Sintaxe ● Caching ● Usado  para  aumentar  a  velocidade  de  chamada  para  display()  ou  fetch() salvando isso num arquivo de saída.  ● Pode  fazer  coisas  tremendamente  rápidas,  especialmente  templetes  com longo tempo computacional. ● Desde que templetes sejam dinâmicos, é importante 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  (hora),  isso  funciona  bem  para  cache  dessa  forma.  Já  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. ● Caching precisa ser configurado.
  • 26.
    Smarty – Sintaxe ● Exemplo de caching require('Smarty.class.php'); $smarty = new Smarty; $smarty->caching = true; $smarty->display('index.tpl'); Multiple Chaches per Page
  • 27.
    Smarty – Sintaxe ● Plugins ● Plugins são determinadas funcionalidades com  características próprias à implementar junto ao Smarty. ● ● Estes sempre só são lidos quando requisitados.  ● ● E cada plugin é lido apenas uma vez, mesmo se você tem  várias instâncias diferentes do Smarty rodando na mesma  requisição. ● ● O diretório de plugins pode ser uma string contendo um caminho ou um  array contendo multiplos caminhos. Para instalar um plugin, só coloque  em um dos diretórios e a Smarty irá usá­lo automaticamente. 
  • 28.
    Smarty – Sintaxe Convenções de Plugins ● Arquivos:  tipo.nome.php ● Onde tipo:  ● function ● modifier ● block ● compiler ● Prefilter / postfilter / outputfilter ● resource ● Insert ● function.html_select_date.php, resource.db.php, modifier.spacify.php.
  • 29.
  • 30.