Configurar Smarty, un gestor de templates para PHP
En muchas ocasiones el desarrollo de sitios o aplicaciones webs
implica crear interfaces HTML para aplicaciones escritas en PHP.
El uso de templates permite separar elegantemente el codigo PHP de su presentacion.
Existen varios motores de templates, pero sin duda el que más difusión y documentación tiene es Smarty.
Nos descargamos las librerias de Smarty y las copiamos en nuestro equipo. Por ejemplo, las podemos dejar en
/usr/local/lib/php/Smarty/.
$> cd TU_DIRECTORIO_DE_DESCARGAS $> tar -zxvf Smarty-2.6.22.tar.gz $> mkdir /usr/local/lib/php/Smarty $> cp -r Smarty-2.6.22/libs/* /usr/local/lib/php/Smarty
Al descomprimir, deberíamos tener la siguiente estructura:
/usr/local/lib/php/Smarty/ Config_File.class.php debug.tpl internals/ plugins/ Smarty.class.php Smarty_Compiler.class.php
Una vez descomprimidos los ficheros, necesitaremos 4 directorios para hacer que Smarty funcione.
Estos son los dedicados a: las plantillas (templates), las plantillas compiladas (compiled templates), a las plantillas cacheadas (cached templates)
y a los ficheros de configuración. Como bien dicen en la web de Smarty, podemos o no usar el sistema de caché que
implementa la libreria, pero no está de más configurar al menos los directorios.
Es una buena práctica colocar estos directorios fuera de los documentos que sirve el servidor web. PHP necesitará permisos de escritura
en los directorios de plantillas cacheadas y compiladas.
En mi ejemplo, el directorio donde están los ficheros a servir están en /web/deckerix.com/files y el propietario es “nobody”.
Colocaré los ficheros bajo /web/www.domain.com/smarty:
$> cd /web/deckerix.com $> mkdir smarty $> mkdir smarty/templates $> mkdir smarty/templates_c $> mkdir smarty/cache $> mkdir smarty/configs $> chown nobody:nobody smarty/templates_c $> chown nobody:nobody smarty/cache $> chmod 775 smarty/templates_c $> chmod 775 smarty/cache
Llegados a este punto, ya tenemos Smarty listo para ser usado. Ahora realizaremos un pequeño ejemplo:
$> cd /web/deckerix.com/files $> mkdir pruebas_smarty $> cd pruebas_smarty $> vi index.php
Editamos el fichero index.php para que quede de la siguiente manera:
<?php require('/usr/local/lib/php/Smarty/Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = '/web/deckerix.com/smarty/templates'; $smarty->compile_dir = '/web/deckerix.com/smarty/templates_c'; $smarty->cache_dir = '/web/deckerix.com/smarty/cache'; $smarty->config_dir = '/web/deckerix.com/smarty/configs'; $smarty->assign('name', 'Oscar'); $smarty->display('index.tpl'); ?>
Nos falta editar la plantilla:
$> vi /web/deckerix.com/smarty/templates/index.tpl
con el siguinte texto:
<html> <head> <title>Pruebas con Smarty</title> </head> <body> Hello, {$name}! </body> </html>
Ahora escribimos en el navegador la siguiente URL : http://Ddeckerix.com/pruebas_smarty/index.php
y veremos como nos saluda con un bonito: “Hello Oscar”