Instalar Smarty en Windows

  • Por
  • 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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Alvaro

04/3/2009
En esta misma Web encontre esto.

http://www.desarrolloweb.com/actualidad/php-smarty-contra-1474.html

Andrés

15/3/2009
Pésimo, horrible su tutorial para instalar Smarty. Nisiquiera se molestan en separar con líneas verticales los directorios y hay que estar adivinando las rutas. Después sus instrucciones son pesimamente abstractas y casi inentendibles. Sus ejemplos no sirven, y solo dicen "el index.tpl que tenemos que crear", pero después no dicen nada más.

Decepsionante tutorial. Tuve que usar el que está inglés de la pagina de PHP para poder instalar smarty.

Jorge Luis

09/11/2009
Instalación Smarty
Está genial este resume, al momento entendí los pasos y logré configurar Smarty por primera vez para usarlo, siguelo paso a paso y verás que sale completo al kilo

francisco

29/12/2009
problema instalando smarty
tengo problemas integrando smarty y adodb a una aplicacion para un centro medico ..
hasta el momento despues de leer unos tres dias, descubri que debo asignar a la variable include_path las librerias separadas por un punto y coma asi include_path = ".;c:AppServphp5PEAR;c:AppServphp5libreriassmarty;c:AppServphp5libreriasadodb"
pero aunque lo aya exo asi = la aplicacion me da el error
Warning: require_once(smarty/Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in C:AppServwwwsimple_ssa1app_soapersonaspersonas.php on line 4

Fatal error: require_once() [function.require]: Failed opening required 'smarty/Smarty.class.php' (include_path='.;c:AppServphp5PEAR;c:AppServphp5libreriassmarty;c:AppServphp5libreriasadodb') in C:AppServwwwsimple_ssa1app_soapersonaspersonas.php on line 4


algun error que puedan deducir de esto..?

erick

03/10/2012
ayuda para corregir error
el error que tuve lo qrregle con esta lina
require('C:wampSmartylibsSmarty.class.php');

se debe agregar la ruta de la clase...

suerte...!!!!!