Motor de Plantillas Smarty para PHP: Implementación y Optimización

Fundamentos de Smarty

Naturaleza de Smarty

Smarty es un motor de plantillas para PHP que separa la lógica de negocio de la presentación visual. Utiliza etiquetas especiales dentro de archivos HTML para insertar contenido dinámico, permitiendo que diseñadores modifiquen interfaces sin alterar código PHP.

Ventajas Clave

  • Separación clara entre capas lógicas y de presentación
  • Sintaxis simplificada para equipos de frontend
  • Mecanismos de caché integrados para optimización
  • Herramientas avanzdaas como herencia de plantillas

Configuración Inicial

Instalación mediante Composer

composer require smarty/smarty

Estructura de Directorios

$motor = new Smarty();
$motor->setTemplateDir('vistas/');
$motor->setCompileDir('cache/compilados/');
$motor->setCacheDir('cache/salida/');

Sintaxis Esencial

Variables y Salida

// Asignación en PHP
$motor->assign('encabezado', 'Panel de Control');
<!-- Plantilla Smarty -->
<h1>{$encabezado}</h1>

Estructuras de Control

{if $sesion_activa}
  <span>Bienvenido</span>
{else}
  <a href="/ingreso">Autenticarse</a>
{/if}

{foreach $articulos as $publicacion}
  <div>{$publicacion.titulo}</div>
{/foreach}

Funcionalidades Avanzadas

Composición Modular

{include file="cabecera.tpl"}

{block name="principal"}
<section>Contenido por defecto</section>
{/block}

{include file="pie.tpl"}

Herencia de Plantillas

{extends file="base.tpl"}

{block name="principal"}
<article>Contenido específico</article>
{/block}

Gestión de Caché

Configuración

$motor->caching = Smarty::CACHING_LIFETIME_SAVED;
$motor->cache_lifetime = 1800; // 30 minutos

Limpieza Selectiva

// Eliminar caché específico
$motor->clearCache('productos.tpl');

// Limpiar caché completo
$motor->clearAllCache();

Casos de Implementación

Flujo de Aplicación

// Controlador
$datos = ['usuarios' => obtenerUsuarios()];
$motor->assign('datos', $datos);
$motor->display('lista_usuarios.tpl');

Estructura de Proyecto

proyecto/
├── controladores/
├── modelos/
└── vistas/
    ├── parciales/
    │   ├── cabecera.tpl
    │   └── pie.tpl
    └── paginas/
        └── perfil.tpl

Análisis Comparativo

Smarty vs Twig

Característica Smarty Twig
Sintaxis Estilo tradicional Más moderno
Seguriadd Requiere configuración Auto-escape por defecto

Solución de Problemas

Depuración

{debug}

Protección Contra XSS

{$entrada_usuario|escape:'html'}

Etiquetas: Smarty PHP Template Engine separación de preocupaciones caché web

Publicado el 6-30 06:38