Foros del Web » Programando para Internet » PHP »

Separar presentación de código sin SMARTY

Estas en el tema de Separar presentación de código sin SMARTY en el foro de PHP en Foros del Web. Saludos !! ¿Alguien me puede dar un ejemplo de cómo separan el código de la presentación? Es por todos conocido que se acostumbra a hacer ...
  #1 (permalink)  
Antiguo 27/02/2006, 09:27
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Separar presentación de código sin SMARTY

Saludos !!

¿Alguien me puede dar un ejemplo de cómo separan el código de la presentación?

Es por todos conocido que se acostumbra a hacer algo como:

print_header();

print_footer();


y en medio de las dos anteriores poner el contenido. Ok, esa es muy básica, ahora supongamos que dentro del contenido, quieren imprimir una tabla cuyos datos provienen de una base de datos.

Cómo lo abordan,
  • ¿ponen un código con whiles y echos?,
  • ¿ponen una función print_tabla() y le encargan el trabajito de imprimirlo dentro de ésta?
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #2 (permalink)  
Antiguo 27/02/2006, 09:35
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 11 meses
Puntos: 0
Mira yo en la pagina de la empresa la manejor asi

header.php

Contenido

footer.php

en contenido manejo el paginador de unos registros que tengo en la base de datos y no me da problemas en nada

es algo asi lo que necesitas?
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #3 (permalink)  
Antiguo 27/02/2006, 09:57
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Pues quería una idea, Carlos. Mira, ahorita tengo una web, pero no me gusta mi diseño artístico, soy malo con eso de la combinación, etc, etc, y pensé en hacer el diseño web de tal manera que pueda avanzar ahorita con todo lo que tenga que ver con programación, interacción, seguridad, etc.

Y otro día, que me sienta más inspirado, pues ya dedicarle al diseño web como tal, como presentación, con ciertos colores, imágenes, fondos, etc.

Entonces me acordé que por aquí se ha comentado que hay lugares en donde incluso los programadores y los diseñadores trabajan en forma paralela, eso quiere decir que se encara a la programación de una forma tal, que permite efectivamente separar uno de otro, y que usan algo llamado SMARTY, etc.

Yo no deseo complicarme la vida, sólo que eso de que pueda cambiarle la presentación como si mi web fuera un celular al que se le cambia la carátula, me resulta fasciante.

A ver qué les parece esta idea.

En lugar de el clásico: print_header() y print_footer(), escribir algo como:

Código PHP:
//selecciona el template que quieras (1 al 3)
$template=1;
print_header($template
En donde $template puede valer 1, 2, 3, según los que yo quiera. Entonces ya nada más hago un template simplón para las pruebas y otro día, con más calma, hago otro template y aquí nada más
cambio el valor de $template por un 2 y todo cambia nada más por hacer eso.

¿Es así como se encara lo de la separación que me pregunto? O es algo más complejo?
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #4 (permalink)  
Antiguo 27/02/2006, 10:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. si quieres un gestor de templates más simple que Smarty puedes usar:

NokTemplate
http://www.jpw.com.ar/noktpl.php

O este sistema que dejaron en el foro hace poco:
http://www.forosdelweb.com/f68/mgtheme-class-clase-para-manejo-archivos-template-374243/

Pero .. por otro lado si te fijas .. PHP en extricto rigor es un "motor" de plantillas también.

Te pongo un ejemplo simple:

script_proceso.php
Código PHP:
<?
$variable
="valor";
// procesos .. 
$otra_variable="blablabla";
include (
"plantilla.php");
?>
plantilla.php
Código PHP:
<html>
<head>
</head>
<body>
Esto es una prueba: <?=$variable ?> ... etc .. etc
Otra variable de PHP: <?=$otra_variable ?>
</body>
</html>
Por supuesto que cuando usamos sistemas o "motores" de gestión de plantillas .. pedimos "más" funcionalidades .. como usar bloques (PHP tienee su función "include()" .. y demás ..

El ejemplo es sólo para demostrar que en muchos casos de plantillas extremadamente simples:

.. ¿que más dá poner <?=$variable?> o poner {VARIABLE} ?

De hecho el "parseo" própio de PHP como "gran motor de plantillas" sería mucho más óptimo en estos casos.

Es cierto que luego llegan los motors de gestión de plantillas a decirnos que para solventar esos problemas y en otros casos mejorar incluso el redminiento del sistema usan sistemas de "gestión de chaché" que se pueden usar con mejores fines ...

Un saludo,

PD: No estoy en contra de los "motores" de plantillas .. pero si que de usarlos "con moderación" o el "motor" que mas nos acomode ..
  #5 (permalink)  
Antiguo 27/02/2006, 16:22
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
cool

Cita:
Pero .. por otro lado si te fijas .. PHP en extricto rigor es un "motor" de plantillas también.
Así como planteas las cosas, sí man.

Gracias por el ejemplo Clúster. Comienzo a ver por qué a muchos no les gusta el smarty y otros sistemas parecidos a algunos.

Creo que capto la idea, bro. Entonces si ahorita hago un template y luego hago otro (o tomo uno gratis de la red), bastaría con:

Código PHP:
 <?
$variable
="valor"
// procesos ..  
$otra_variable="blablabla"

if(
true) include ("original_body.php"); 
else include (
"clasica_body.php"); 
//claro que ese true viene mejor con
//una variable, aquí es para hacerlo
//más claro.
?>
Y tendría justo lo que necesito, así no tengo que repetir líneas de código para hacer lo que ya hacía antes ni tengo que sobreescribir el template original al momento de cambiarme a otro, que es justamente lo que yo deseaba.

Thanks Clúster
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #6 (permalink)  
Antiguo 28/02/2006, 04:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Mas o menos la idea que planteas es parte de lo que se usa para una web tipo "modular" (ver FAQ para ejemplos).

Gracias al tipo de funciones como "include()" que te permite "incluir" código en cualquier parte de otro que lo llame, puedes crearte "repetidos" tantas "plantillas" como gustes .. o simplemente en tu caso .. "desglosar" esa parte de código PHP+HTML (tal vez) que hace un proceso o presenta en scripts aparte.


Un saludo,
  #7 (permalink)  
Antiguo 28/02/2006, 05:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Gracias por el ejemplo Clúster. Comienzo a ver por qué a muchos no les gusta el smarty y otros sistemas parecidos a algunos.
La mayoría de gente que no le agrada "Smarty" es por qué ha llegado a un punto de "complejidad" para ofrecer ciertas funcionalidades que "creó" su própio lenguaje para interpretar tus plantillas .. con sus condicionales, bucles y demás. Algunos dicen que es un lenguaje sencillo .. OK; pero aquí no se está poniendo en duda si es un lenguaje sencillo o que nos resuelve algunos problemas con la generación de una plantilla de forma cómoda .. sino de que hay que recordar que YA estamos usando un lenguaje de programación: PHP .. así que si evitamos "sobrecargar" ciertos procesos por parte de un script (Smarty u otro similar) y hacerlo desde el lenguaje "padre" (PHP) será en la mayoría de casos más óptimo su rendimiento. Por supuesto aquí ya entramos en el dilema de siempre: rendimiento de la aplicación (sería= a "comerse la cabeza" con más código PHP) vs productividad de implementación del código (rapidez con la que se crea el código).

Por mi parte (es una opinión personal que algunos comparten) prefiero usar motores de gestión de plantillas más simples .. (con control de "bloques" simple .. y manejo de caché a lo sumo). Para "separar" el código (capa de "negocios") de la capa de "presentación" no es necesario usar a la fuerza un "gestor/motor de plantillas", como puse el ejemplo .. ya estaríamos separando ambos procesos (tampóco es necesario que tengan que quedar en "scripts" a parte .. pero así se vé más "claro").

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:40.