uso un po smarty..

In poche parola il tpl principale viene visualizzato col metodo display:

$viewer(uso io questi nome per la classe smarty)

$viewer->display('file.tpl');

le variabili smarty che ti trovi nel tpl le devi assegnare con

$viewer->assign('nome_var', 'prova txt'); e quindi avrai {$nome_var} in file.tpl

Per visualizzare in file.tpl altri tpl e quindi altre pagine(blocchi) da includere in esso, dovresti usare il metodo fetch.

Ad esempio un metodo che ritorna questo return $viewer->fetch('box_login.tpl'); e quindi avrai :

$viewer->assign('box_login', self::login());
$viewer->display('file.tpl');

In file.tpl avrai la variabile {$box_login} che sara' tutto il tpl del sigolo box login.

C'e' solo da fare attenzione dove assegnare le variabili.
Le variabili usate nel boxlogin vanno assegnate nel metodo del rispettivo dove fai il fetch perche' se assegnate dove fai il display probabilmente non dovresti vederle.
assegnandole a monte e quindi nel metodo dove c'e' il diaplay dovresti vederle ovunque perche' a monte(fai una prova non vorrei confondermi)