Usando archivo externo y separado para los bloques (cualquiera que definas) fuera de la template "padre" serías asi (lo probé y funciona correctamente):
Código PHP:
<?
require("class.NokTemplate.php");
$html=new NokTemplate();
$html->cargar('plantilla','plantilla.htm');
$html->cargar('bloques','bloques.htm');
$html->definirBloque('bloque1','bloques');
$html->definirBloque('bloque2','bloques');
$algo='b';
if ($algo=='a'){
// si se cumple condición, se asignan las variables que corresponadan a ese bloque y se "expande" sobre la variable que debe presentarse.
$html->asignar('TEXTO_BLOQUE_1','bloque 1 texto');
$html->expandir('BLOQUE1','bloque1');
}else{
$html->asignar('TEXTO_BLOQUE_2','bloque 2 texto');
$html->expandir('BLOQUE1','bloque2');
}
$html->imprimir('BLOQUE1');
?>
bloques.htm Código PHP:
<!-- inicioBloque: bloque1 -->
Mi HMTL y {variables} si las necesito ... {TEXTO_BLOQUE_1}
<!-- finBloque: bloque1 -->
<!-- inicioBloque: bloque2 -->
Mi HMTL y {variables} si las necesito ... {TEXTO_BLOQUE_2}
<!-- finBloque: bloque2 -->
Y tu plantilla "padre" ..
Código PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
</head>
<body>
bla bla
Aquí --- > {BLOQUE1} <--- Bloque!
</body>
</html>
Lo malo que tiene esta forma de trabajar con templates con bloques es que no se puede ver en un editor HTML "visual" cómo quedaría ese bloque ahí en esa posición (por qué el archivo está en otra parte ..)
Un saludo,