Ir para o conteúdo

Sistema minimalista de templates

Este pequeno tutorial mostra como usar um sistema de templates leve e compacto. Tudo se resume a uma função que substitui tags num template por conteúdo que pode ser obtido programaticamente. Os templates ficam guardados um por ficheiro e são carregados quando for preciso mostrar uma página, ou parte dela.

Templates

Um template pode contem a estrutura/design de uma página ou de parte dela. O conteúdo será colocado nos sítios onde aparecem tags entre chavetas. O exemplo seguinte explica-se a si próprio:

Nota: O template usado neste exemplo não tem estilos CSS.

index.tpl.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>{TITULO}</title>
    <meta name="description" content="{DESCRICAO}" />

</head>
<body>
    <div id="cabecalho">
        {CABECALHO}
    </div>

    <div id="titulo">
        <h1> {TITULO} </h1>
    </div>

    <div id="descricao">
        {DESCRICAO}
    </div>

    <div id="conteudo">
        {CONTEUDO}
    </div>

    <div id="rodape">
        {RODAPE}
    </div>

</body>

Função de substituição

A função que carrega o template é bastante simples. Tudo o que faz é abrir um ficheiro de texto, colocar o seu conteúdo numa string e substituir ocorrências da chave do array recebido como segundo argumento pelo conteúdo do elemento do array. Por motivos de simplicidade as chavetas não são passadas no array de argumentos.

function load_template($file,$tags){
    #Abrir o ficheiro que contem o template
    $html_output = file_get_contents($file);  

    #substituir as tags pelo respectivo conteudo
    foreach ($tags as $tag => $replaceby){
        $tag = "{".$tag."}";
        $html_output = str_replace($tag, $replaceby, $html_output); 
    }
    return $html_output;
}

Utilização

Usar este sistema de templates é trivial, tudo o que é preciso fazer é chamar a função de substituição com os parâmetros adequados.

#definição do conteudo da página

$tags = array(
    "TITULO" => 'Teste do sistema de templates',
    "DESCRICAO" => 'Um pequeno teste só para mostrar o potencial deste sistema de templates',
    "CABECALHO" => '',  
        "CONTEUDO" => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ac magna. Vestibulum malesuada ipsum varius lectus. Vestibulum in odio. Suspendisse non turpis. Praesent vulputate nisl vitae nisi. Sed a urna. Sed in ligula. Nunc sapien. Duis ac nulla. Pellentesque dolor mauris, adipiscing id, rhoncus at, sollicitudin eget, nisi. Nam metus orci, tristique vel, suscipit nec, condimentum nec, lacus. Nullam interdum. Fusce diam. Integer aliquet varius nisl',
    "RODAPE" => '<a hreff="http://wiki.portugal-a-programar.org">portugal-a-programar</a>'

);

#carregar o template
echo load_template("index.tpl.html",$tags);