scusate se inizio il post cosi ... ma ... no, non vedere smarty ... anzi stai alla larga da lui e da tutti i suoi simili (ovvero da tutti quei template engine che implementano un proprio linguaggio)

giusto ieri ho fatto un post sulla ml del grusp ... copia/incollo qui, mi secca riscrivere

In generale sono contro i template engine che implementano un proprio
linguaggio perché:
- php è già un template engine, andare ad implementare un altro
linguaggio comporta non solo un consumo maggiore di risorse (consumo
che rischia di diventare eccessivo, un esempio tra tutti proprio
smarty);
- generalmente gli editor php visuali permettono ai grafici di
implementare buona parte del template senza scrivere codice php e, ove
necessario, penso che un grafico sarebbe "più felice" se deve
impararsi qualcosa di php piuttosto che impararsi qualcosa di smarty;
- il caching del template "compilato" (se cosi si può dire) può
risultare problematico su quei serivizi di hosting che impongono una
specifica cartella nella quale scrivere con php con il risultato che
il software deve prevedere un'apposito parametro di configurazione per
la cache del template engine (dato che molti software non permettono
di variare questo parametro).

Ci sono anche altri motivi, ma ritengo che questi stiano tra le prime
posizioni

Detto tutto questo, un "include/require" non può essere sostituito da
nessun template engine: che non vuol dire che non si deve fare
separazione tra "view" e "controller" ... anzi! Semplicemente che
invece di usare un'altro linguaggio per costruire la view si usa php.
Detto tutto questo, se vuoi guardare un framework dai un occhio a Zend Framework ... ovviamente non pensare di arrivare li e con uno schiocco di dita fare i miracoli perché farai solo pianti ... ma se ti ci metti, pian piano, tirerai fuori roba buona

Personalmente ti consiglio di realizzare il progetto usando la OOP e evitando il più possibile di scrivere codice che segue le vie del procedurale (ovvero codice che fa uso di global ad esempio)