Hi !
 
No conozco SMARTY pero si conozco "Template Power" y es en esencia eso mismo, se ponen etiquetas en el HTML de esta forma {etiqueta} y luego se lo asigna desde el PHP un valor, pero el proceso que asigna el valor es interior a la clase que lo produce, nosotros no debemos buscar en el texto la etiqueta y reemplazarla, en Template power, por ejemplo:  
 Código PHP:
    <?php
     include_once ("class.TemplatePower.inc.php");
     $tpl = new TemplatePower("index.tpl.html");
     $tpl->prepare();
     $tpl->assign("hola", "aqui pondremos un texto"); // Esto le asigna a la etiqueta un valor
     $tpl->printToScreen();
?>    
   Código HTML:
 <html>
<head>
<title>Prueba con Template Power</title>
</head>
<body>
<h1>{hola}</h1>
</body>
</html>  Eso es en Template Power... Le asignas un archivo ( que lo inicias cuando creas el objeto de la clase TemplatePowe ) que será el HTML del PHP que estás generando. 
luego con el metodo "assign" le asignas a una etiqueta un valor desde el PHP. 
Es muy util! Espero te sirva de referencia! 
-ByE-