> Manuales > Taller de PHP

Cómo instalar Smarty en Windows, el popular sistema de plantillas para PHP.

Vamos a relatar en este artículo los pasos para instalar Smarty en un servidor local en Windows. Para el que no lo sepa, Smarty es un sistema de plantillas para PHP, con el que podemos separar la presentación (diseño) del código (programación), es decir, separar la lógica de negocio, creada por medio de scripts en PHP, del HTML que se utiliza para visualizar la información en la página web. De este modo, podemos tener los scripts PHP, que realizan los programadores, de manera independiente a la forma de presentación que realizan los diseñadores. Smarty además ofrece muchas otras ventajas, como cacheo de páginas generadas, lo que puede aumentar el rendimiento del servidor.

Aunque en un artículo de DesarrolloWeb.com anterior estuvimos viendo Smarty también tiene sus desventajas, lo cierto es que es un sistema muy utilizado y que puede ser muy interesante en muchos casos.

Así pues, vamos a relatar una pequeña ayuda consistente en una serie de pasos para ponder en marcha Smarty en un servidor Windows (ya sea nuestro servidor web Apache o IIS), tal como hemos hecho nosotros para probar el sistema de plantillas.

Nota: El setup y pruebas de Smarty que estamos comentando aquí las hemos realizado con éxito sobre la versión 2.6. Además, para referencia, dejamos un enlace a la documentación donde hemos extraído los pasos para realizar este proceso (inglés).

Pasos para la instalación de Smarty

El primer paso sería entrar en la página de Smarty para descargar la última versión disponible del producto.

Tendremos que descomprimir luego el archivo descargado y colocarlo en cualquier directorio donde deseemos, siempre que quede fuera del directorio de publicación de las páginas, osea, fuera del document root. En mi caso, que tengo instalado Wamp (paquete que proporciona Apache + PHP + MySQL, con una instalación sencilla), he colocado Smarty dentro del directorio de instalación de Wamp, pero fuera del directorio "www", que es el directorio de publicación de las páginas.

El directorio donde lo he descomprimido es C:wampsmarty

Ahora tenemos que agregar en el include_path de PHP la ruta del directorio "libs" que hay en el directorio donde hemos metido los archivos de Smarty (La directiva include_path, que está en el php.ini de PHP indica los directorios donde se van buscar los archivos que se incluyan en PHP, tanto con la función include como con require). Para editar el php.ini, lo primero que tenemos que hacer, es localizarlo en nuestro disco duro. Lee la FAQ ¿Dónde está mi php.ini? para encontrarlo.

En el php.ini tienes que buscar la mencionada directiva include_path. Lo mejor es que busques en el archivo con la herramienta de buscar texto. Entonces tienes que modificarlo para agregar el directorio libs donde hayas instalado Smarty. Por ejemplo, te podrá quedar algo como esto:

include_path = ".;C:wampsmartylibs"

Una vez has editado y guardado el php.ini, tienes que reiniciar el servidor web, para que los cambios realizados en el include_path tengan efecto.

Ahora tienes que crear varios directorios que utiliza Smarty para guardar el código fuente de las plantillas, las plantillas procesadas y la caché. Son 4 directorios:

Por un lado tenemos dos carpetas que se tienen que guardar en algún lugar de directorio de publicación del servidor. Mi directorio de publicación es el siguiente: C:wampwww entonces, estos dos directorios podrían quedar:

C:wampwwwsmartytemplates (Este es el directorio donde se guardarán las plantillas)
C:wampwww smartyconfigs (Este directorio se guardan configuraciones de Smarty)

Por otro lado tenemos dos archivos que se deben guardar fuera de nuestro directorio de publicación.

C:wampsmartytemplates_c (En este directorio se guardan las plantillas de Smarty compiladas)
C:wampsmartycache (en este directorio se guarda la caché de las páginas generada por Smarty)

Probar la instalación de Smarty

Una vez que hemos terminado de instalar y configurar el sistema, podemos hacer una prueba para ver si todo funciona correctamente.

Para ello debemos crear dos archivos: 1) un archivo PHP que utiliza la plantilla y 2) el código de la propia plantilla Smarty para generar una página.

Primero vamos a crear el archivo PHP con el código necesario para cargar, configurar y mostrar la plantilla. Este archivo lo podemos colocar en cualquier lugar de nuestro directorio de publicación. El código PHP sería el siguiente:

<?php
//cargamos las librerías de smarty
require('Smarty.class.php');

$smarty = new Smarty;

$smarty->template_dir = 'C:wampwwwsmartytemplates';
$smarty->config_dir = ' C:wampwwwsmartyconfig';
$smarty->cache_dir = 'C:wampsmartycache';
$smarty->compile_dir = 'C:wampsmartytemplates_c';

//asignamos los valores para personalizar plantilla, para sustituir las variables de la misma
$smarty->assign('nombre','DesarrolloWeb.com');
$smarty->assign('titulo','Título de la página que meto desde PHP para personalizar!');

$smarty->display('index.tpl');
?>

Como se ha podido ver, se utiliza una plantilla de Smarty, llamada "index.tpl" (el nombre de la plantilla que estamos utilizando se puede ver en la línea de código $smarty->display('index.tpl');), que también tenemos que crear y guardar en el directorio que hemos creado para almacenar las plantillas C:wampwwwsmartytemplates.

<html>
<body>
<h1>{$titulo}</h1>
Hola {$nombre}!
</body>
</html>

Para ver si todo está funcionando perfectamente tenemos que abrir el archivo donde hemos colocado el primer código PHP. Yo lo guardé el en directorio raíz de publicación y con el nombre "pruebosmarty.php". Luego, para abrirlo a través del servidor web, tengo acceder a la siguiente URL:

http://localhost/pruebosmarty.php

Resolución de problemas en la instalación de Smarty

Se me ocurren dos errores típicos que te pueden salir.

El primero es que te de un error al incluir el Smarty.class.php. Si surge este error, puede ser que no hayas editado el php.ini correctamente, colocando el include_path en la ruta correcta del directorio "libs" de los archivos de Smarty. Recuerda que tienes que reiniciar el servidor cada vez que hagas cambios en el php.ini y la manera correcta de localizar tu php.ini en tu disco duro (a través de la ejecución de la función phpinfo()).

Otro error que te puede salir es que el sistema no haya localizado la plantilla que tiene que abrir. En este caso revisa la línea donde especificas el directorio de las plantillas en el código PHP:

$smarty->template_dir = 'C:wampwwwsmartytemplates';

Y revisa que en ese directorio esté la plantilla con la que estás trabajando "index.tpl".

Espero que con esta ayuda, inspirada en la propia documentación de Smarty y ampliada con explicaciones adicionales, extraídas de las pruebas realizadas por desarrolloweb .com, puedas instalar el sistema de plantillas Smarty para PHP.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual