Motor de templates para PHP
7 seguidores
Bueno, estoy haciendo mi primera web con templates en PHP y había empezado a utilizar nok template, pero ante el nulo soporte (tampoco nadie le paga por ello), he decidido mirar otros motores.
He hecho una búsqueda en el foro y parace que gusta smarty. Además tiene un montón de documentación y soporte, aunque en inglés.
Encontré el tutorial de gen7es y creo que empezaré por ahí.
¿Alguien que se haya pegado con esto? ¿Consejos para newbies?
Muchas gracias!
meddle
mi unico consejo posible es que experimentes, al principio siguiendo el tuto de gen7es poco a poco, para ir familiarizandote con el tema, luego añadiendo estilos, etc (bueno eso deberia aplicarse a todo, tanto si empiezas a aprender smarty como si empiezas a desarrollar un proyecto nuevo). y si te gusta smarty y te salen dudas ya sabes a quien darle el toque ;)
juandelgado
Meddle, siento comunicarte que te he agregado a mi libreta de direcciones bajo el epígrafe "Smarty Official Supporter" ^_^ Es broma.
He estado haciendo pruebas con Nok Template y creo que tiene un buen rendimiento, aunque tampoco te lo puedo asegurar porque no he probado el resto de motores, ya te lo diré cuando compare.
Sí que he tenido problemas al intentar utilizar la caché... aunque no te puedo asegurar que no sea culpa de un mal uso de la clase por mi parte.
Bueno, yo os haré un informe.
Bye!
meddle
jaja, ok. tu tranqui, en serio, tu pregunta lo que sea. de hecho si me preguntas cosas chungas me tendre que aplicar y desempolvar la documentacion oficial, que tambien va bien ;)
he probado en el pasado otro sistema, creo que se llamaba patTemplate o algo asi, y era muy parecido a Smarty. Creo que todos se parecen bastante.
hartum
Que coño smarty ni leches, tags y funcion explode y ya esta, en plan macho man ;-)
meddle
mmm, la verdad es que v3 lo estoy preparando sin templates, pero eso no quita que sean muy utiles. eso si, siempre que trabajes sin templates, todo el php debera ir al principio, y luego hacer solo echos del tipo
<code><?php=$var?></code>
orange
Yo creo que lo más "oficial" que hay es la phpLib
http://phplib.sourceforge.net
Es una librería genérica que añade un montón de funcionalidades a PHP (entre ellas las plantillas) ... ese motor (entre otras muchas cosas) es el que utiliza el phpBB
meddle
no es por llevar la contraria, pero para oficial la smarty, mas que nada porque php.net la recomienda y aloja en su servidor: http://smarty.php.net/ :)
otra cosa es que este mas o menos extendida o sea mas o menos reciente.
orange
Pues eso también es cierto ... de todas formas se rumorea que en PHP5 habrá un motor de templates incluido, no he echado un ojo a las new features, ¿sabeis algo?
meddle
eso parece, pero aun no me he metido con el php5. preguntare a ver que me dicen
sole
Smarty está bastante bien, aunque es un poco complejo para trabajos sencillos. Para mi web uso mi propio "motorcillo", y no va nada mal. :-)
Todo depende de la complejidad que quieras alcanzar en el proyecto en concreto, pero lo que me gusta especialmente de smarty es la posibilidad de crear componentes propios, rollo Tags de html pero con el comportamiento que tú defines. Con un poco de curro se pueden conseguir cosas muy útiles y potentes. Echa un vistazo y verás q guay!
lemark
Yo he usado smarty, y me ha resultado demasiado extenso para lo q buscaba. Ultimamente uso btemplate:
http://www.massassi.com/bTemplate/
un motor de templates tamaño reducido. Por lo que entendí en un articulo de la web del autor:
http://www.massassi.com/php/articles/template_engines/
el mismo dejo de usar motores de templates llegando a la conclusion de que el mejor motor de templates es el propio lenguaje PHP.
salutti di mare
oyabun
Personalmente a mi Smarty me parece demasiado mastodontico para la mayoria de las personas, yo creo que un motor de plantillas deberia de ser sencillo y no casi tan complicado como el propio lenguaje en el que programas. Yo creo que lo mas sencillo seria algun motor de plantillas con soporte de plantillas al estilo XML, tipo:
<fecha /> --- Para los items simples
<plantilla modulo="noticias" categorias="todas" campos="fecha,categoria,titular" orden="DESC;fecha" /> --- Para los items mas complejos.
de forma que luego podamos editar el codigo del modulo noticias, algo asi como "noticias.tpl" donde podamos editar el codigo para item que vaya a salir en noticias y para el contenedor de esos items.
No se si me explico.
Ah!, y olvidemonos de XSL/ XSLT & Friends por que tiene que ser un motor sencillo de usar por gente con pocos conocimentos.
Perdon por mi ignorancia. Pero... ¿Permite SMARTY algo asi sin tener que volverme loco?.
Un saludo.
juandelgado
Bueno, estoy haciendo pruebas con Smarty, pero estoy atascado en algo sencillo en teoría.
Mi idea es crear un archivo setup.php (fuera del directorio html) en el que se incluyen otros archivos comunes a todas las páginas como el de conectar a la bd, la autenticación y lo siguiente respecto a Smarty:
<code> // smarty
define('SMARTY_DIR',"/Smarty/");
require_once(SMARTY_DIR.'Smarty.class.php');
// extendemos la clase
class mySmarty extends Smarty {
function mySmarty() { // constructor
$this->template_dir = SMARTY_DIR."templates/";
$this->compile_dir = SMARTY_DIR."templates_c/";
$this->caching = false;
} // end constructor
} // end mySmarty
// creamos el nuevo objeto
$smarty = new mySmarty();</code>
Ok, el caso es que si desde el propio setup.php intento mostrar una plantilla (para probar que funciona bien) va de lujo, el problema viene cuando quiero empezar a trabajar de verdad.
En otro archivo (ya en el directorio html) intento hacer lo siguiente:
<code> include("../../../data/setup.php");
$smarty->display('admin_index.tpl');</code>
Pues me tira el siguiente error:
<fieldset>Fatal error: Failed opening required '/Smarty/core\core.get_include_path.php' (include_path='.;c:\php4\pear') in F:\www\eco\data\Smarty\Smarty.class.php on line 1781</fieldset>
Atención a la barra "\" que hay justo antes del archivo que quiere incluir. He probado a reinstalarla, y nada. Además, ya digo, que probando desde el propio setup.php funciona perfectamente.
Estoy con Apache + WinXP, + php 4.x y no tengo ni puta idea de por qué no rula.
Alguna idea feliz, please? Gracias.
juandelgado
Bueno, lo solucioné gracias a un consejito de ForosdelWeb.
El problema estaba en la ruta que se definía del directorio de Smarty: "/Smarty/"
Eso indica que el directorio de la clase estaba en la raíz del disco + "/Smarty/", lo cual no es cierto.
Total, que utilizando $_SERVER['DOCUMENT_ROOT'], creo la ruta absoluta al diretorio y listo!
Sigo currando : )
Bye