per il discorso delle variabili, un modo che usano è ob_get_contents, del tipo:

Codice PHP:

ob_start
();

include 
"path_to_view_page.ext"//facendo l'include, php interpreta ed esegue il codice presente nella pagina

$output ob_get_contents();

ob_end_clean(); 
in $output ora hai l'html della pagina che deve essere inclusa nel template. quindi ora o fai uno str_replace sul content del template, oppure puoi fare una cosa del tipo:

Codice PHP:

ob_start
();

$variabile_nel_template $output;

include 
"path_to_template_file.ext";

$end_output ob_get_contents();

ob_end_clean();

echo 
$end_output//html completo di pagina view+template 
ovviamente il template sarà una pagina del tipo:

Codice PHP:
<html>
..
<body>
<?php echo $variabile_nel_template?>
</body>
</html>
cmq ripeto, consiglio vivamente di studiarti framework già esistenti per vedere loro che scelte hanno attuato... perchè? perchè visto che stai inventando l'acqua calda, ti conviene vedere come i problemi più comuni siano stati risolti e migliorare i punti deboli delle soluzioni trovate...