Facilitarsi la vita con PHP e Smarty

smarty-logo-orange.gif

Se siete programmatori PHP e siete stanchi di dover utilizzare le solite funzioni printheader() e printfooter(), ma soprattutto stanchi di impastare il codice dentro tag html, dovete proprio darvi una svegliata…. esitono i Template Manager!!
Vediamo di dare una breve definizione di un template manager:
Una classe che si occupa di sostituire dei tag presenti all’interno di un template HTML (un template è un modello in cui inserire contenuti) con l’opportuno output.

In questo articolo prenderò come esempio il template engine che preferisco: Smarty.
Smarty è dotato di funzioni avanzate come le istruzioni condizionali ed i loop , (da inserire all’interno del codice di templating stesso, che possono tornare molto utili per modificare la struttura HTML in base all’output del proprio codice. Ad esempio, potremmo voler visualizzare nella nostra Homepage il form di login solo se l’utente non si è loggato, in caso contrario visualizzeremo una dashboard o un semplice menu utente. Quersto ed altro è possibile grazie a Smarty.

Ecco un semplice esempio di utilizzo di smarty per l’inserimento dei dati di un post all’interno di un template, utile per un blog:

<html>
<head>
<title> {$title} </title>
</head>
<body>
<div class="post">
<div class="cTitle">{$cTitle}</div>
<div class="cContent">{$cContent}</div>
<div class="cFooter">Scritto il {$cDate} da {$cAuthor}     <a href={$cID}>Commenti</a>({cCommentsCount})</div>
<div class="cTags">
{foreach from=$cTags item=tag}
<a href=sito.com/tags/{$tag}>{$tag}</a>,
{/foreach}
</div>
</body>
</html>

Ecco il codice php che fa funzionare il tutto😉

//File index.php
<?
require("path/della/lib/smarty/Smarty.class.php");
$smarty = new smarty(); //La classe smarty
$template = "directory/index.tpl"; //Il file .tpl che contiene la definizione html dotat dei giusti tag
//Qui il codice che recupera i dati da un database
//Ordino i tutti i dati del post in un array associativo che si chiama $post :)
//Ecco la sequenza di assegnazione TAG-OUTPUT
$smarty->assign('cTitle',$post["title"]);
$smarty->assign('cContent',$post["content"]);
$smarty->assign('cDate',$post["date"]);
$smarty->assign('cAuthor',$post["author"]);
$smarty->assign('cTags',$post["tags"]);
$smarty->assign('cID',$post["id"]);
$smarty->assign('cCommentsCount',$post["CommentsCount"]);
$smarty->display($template); // La direttiva che visualizza il template con i tag formattati a dovere ?>

Questo esempio è molto semplice e non credo abbia bisogno di particolari spiegazioni, comunque prende dei dati e li formatta a dovere all’interno del template, la possibilità di creare tag condizionali permette di avere un solo template per diverse circostanze ed evitare un sovraffollamento di files. Se avete domande postate pure!cmq vi rimando alla documentazione ufficiale

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...