Creo que es primer post que hago en este foro, y disculpen si digo una burrada pero actualmente estoy demasiado nuevo en PHP. No obstante este tema de la separación me causa algunas dudas.
Aún no me he metido de lleno con Smarty, pero he lidiado con estructuras que separan el diseño de la programación, por ejemplo:
Código HTML:
<div class="talcosa">{contenido}</div>
donde CONTENIDO_PRINCIPAL es el resultado de un array que viene de lejos:
Código PHP:
$template->parse('pagina', 'lista', array(
'contenido' => $articulos,
'otra_cosa' => $esto ));
Y 'contenido' es la misma variable $articulos procesada para mostrarse en la plantilla.
¿No sería mejor para el programador y el diseñador escribir <?php echo $articulos ?>, lo cual no sólo ahorra dos o tres pasos de cálculo al servidor, sino que también ahorra bastante trabajo a todo el mundo?. De hecho en el caso que les menciono el div="talcosa" está así:
Código PHP:
$templates['cabecera'] = '
<div class="talcosa">{contenido}</div>
etc...
';
¿Por qué tanto esfuerzo innecesario sólo para supuestamente hacer la plantilla más "amigable para el diseñador"?. Creo que en lugar de ese esfuerzo, se debería hacer entender que el PHP puro y duro forma también parte de la estructura y el diseño. Actualmente se usa tanto el PHP para controlar los elementos de una web que me es inconcebible la idea de separarlos de la forma en que estos nuevos frameworks hacen ¿para qué?.
Es decir, el diseñador actual ha tenido que aceptar aspectos que antes no estaban presentes; no tienen que ver con programación pero igualmente tuvieron que esperar hasta ser reconocidos: la usabilidad, la accesibilidad, el código semántico y el mismo CSS forman parte del kit necesario en cualquier proyecto, pero que no fueron aceptados tan fácilmente.
Creo que si alguien se decide hacer páginas dinámicas debe mantener el principio mencionado por GatorV, el KISS. Si dependemos de programas (o aún de procedimientos) cuyo precio por verse bonito en una plantilla sea añadir vueltas, códigos y archivos al proyecto, eso es complicarse la vida al final.
Hay muchos diseñadores que desean implementar lenguaje dinámico, pero son demasiado vagos para tomar un tutorial y ver qué es lo que hay ahí. Es como querer tener un Jeep automático, algo así (les gusta un todo-terreno pero les da flojera aprender a controlar los cambios). El resultado es que nunca van a saber de dónde vienen las cosas y -peor- la forma en que pueden mejorarlas, porque hay un software gestor que lo hace todo por uno.
Como dije, yo estoy aprendiendo y me ha costado un mundo aprender las 3 o 4 funciones que me sé. Y en nombre de ese trabajo que me ha costado, yo jamás pondría en piloto automático el control de mis proyectos. Sin ofender, pero el que se acostumbre a la comodidad de Smarty o similares, nunca va a saber qué hay más allá de Smarty. Porque imagino que llega el momento o el caso en que el programa automático no es suficiente y haga falta un desarrollador de verdad que solucione con 20 líneas lo que a Smarty le tomó 150.
Perdón si alguien se siente mal. En serio no es la intención.