Opciones avanzadas de Smarty
Smarty también ofrece algunas opciones avanzadas, que pueden resultar interesantes
durante la creación de plantillas. Cada una está desactivada por defecto y se
activa estableciendo el valor en la variable adecuada del archivo Smarty.class.php
a true (verdadero) ó 1. También pueden ser definidas, una sola vez, dentro del
documento con la ayuda del esquema $smarty->variable=value, donde variable
es el nombre de la variable, y value es su valor.
Debugging Console (consola de depuración)
Es una consola, que tiene como fin ayudarnos eliminar errores los que
podríamos encontrar en el momento de la creación de plantillas con ayuda
de Smarty. Después de su ejecución, durante la visualización del documento
que utiliza Smarty, debe abrirse una nueva ventana del explorador, en la que
serán enumeradas todas la plantillas, además de las variables que se hayan
utilizado en el documento junto con sus valores. Veamos la Figura 7, donde se
presenta el contenido de la consola para el archivo sgtpep.php.

La forma más sencilla de ejecutar la consola es establecer el valor
adecuado en la variable $debugging – entonces ésta será desplegada
siempre al abrir el documento. Por motivos obvios, es una buena solución
sólo durante la etapa de creación de la página. Si deseamos tener la posibilidad
de decidir si queremos utilizar dicha consola siempre, es suficiente
establecer el valor de la variable $debugging_ctrl en el valor URL.
En tal caso, la ventana de la consola se abrirá si añadimos la variable
SMARTY_DEBUG en la dirección URL de la página a abrir, por ejemplo:
http://localhost/sgtpep.php?SMARTY_DEBUG.
Para terminar, recordemos todavía una cosa: la consola se basa en la
plantilla debug.tpl que se encuentra en la librería de archivos Smarty. Podemos
modificarla para que el aspecto de la consola concuerde con nuestras necesidades.
Por otro lado, si quisieramos pasar la plantilla de la consola a otro
lugar, se debería cambiar el valor de la variable $debug_tpl.
Modo seguro
Se puede ejecutar Smarty de modo seguro o, como lo define la documentación,
con la variable $security activada. Si cambiamos su valor a
true (verdadero), entonces Smarty nos pone algunas limitaciones relacionadas
con su funcionamiento. No podremos utilizar el código PHP directamente
en las plantillas, los archivos externos podrán ser cargados solamente
desde ciertas localizaciones, además, en modificadores e instrucciones if
podrán ser usarse las funciones de PHP, únicamente si han sido definidas
con anterioridad. Al modo seguro se ligan dos variables más: la primera de
ellas es $secure_dir, que representa el array que define el conjunto de directorios
seguros; la segunda es $security_settings, que define el conjunto
de funciones seguras de PHP.
Cache
Como mencionamos al principio del artículo, Smarty compila las plantillas
y las almacena en directorios separados con el fin de mejorar su funcionamiento.
La segunda cosa que acelera el despliegue de las plantillas es el uso de la
caché. Abramos el archivo sgtpep.php y añadamos en él la siguiente línea
$smarty->caching=true;
y luego refresquemos la página en el navegador. Smarty almacenará el contenido
del documento completo dentro del directorio /cache. En la siguiente
llamada, éste no será creado dinámicamente, sino que de manera automática
utilizará el resultado preparado dentro del directorio /cache. ¿Durante cuánto
tiempo? Una hora, ese es el lapso de tiempo, definido en la variable $cache_lifetime; dicho archivo debe ser
almacenado en la caché. Desde luego, podemos cambiar su valor globalmente
dentro del archivo Smarty.class.php o en nuestro documento por medio
de la declaración $smarty->cache_lifetime=seconds, donde seconds es
el período en segundos, durante el cual el archivo debe mantenerse almacenado.
¿Qué sucede en caso de que durante el lapso de tiempo definido por
la variable, se realice un cambio en la plantilla o en cualquier otro archivo que
sea utilizado por el documento? Entonces en el explorador todavía aparecerá
el contenido del archivo almacenado en la caché. Para que los cambios se
reflejen enseguida se puede establecer el valor true a la variable $compile_check. En ese caso, si Smarty
descubre que la plantilla o cualquier otro archivo ha sido modificado, el
contenido de la memoria caché se crea de nuevo.
No es la solución ideal y por eso Smarty también ofrece la posibilidad de
almacenar sólo una parte de la página.