Diferencia entre revisiones de «Smarty»

(En el archivo index.php)
 
(No se muestran 8 ediciones intermedias de 2 usuarios)
Línea 2: Línea 2:
 
|nombre=Smarty
 
|nombre=Smarty
 
|familia=
 
|familia=
|imagen=[[Archivo:File.jpg]]
+
|imagen=Smarty.PNG
 
|tamaño=
 
|tamaño=
 
|descripción=
 
|descripción=
Línea 9: Línea 9:
 
|descripción2=
 
|descripción2=
 
|creador=
 
|creador=
|desarrollador=Monte Ohrt, Messju Mohr [www.smarty.net]
+
|desarrollador=Monte Ohrt, Messju Mohr http://www.smarty.net
 
|diseñador=
 
|diseñador=
 
|modelo de desarrollo=
 
|modelo de desarrollo=
Línea 21: Línea 21:
 
|premios=
 
|premios=
 
|web=
 
|web=
}}
+
}}  
  
 
'''Smarty''' es un motor de plantillas para [[PHP]], facilitando la separación de la capa de presentación ([[HTML]]/[[CSS]]) de la lógica de la aplicación (PHP), uno de los objetivos fundamentales del patrón [[MVC]].  
 
'''Smarty''' es un motor de plantillas para [[PHP]], facilitando la separación de la capa de presentación ([[HTML]]/[[CSS]]) de la lógica de la aplicación (PHP), uno de los objetivos fundamentales del patrón [[MVC]].  
  
== Smarty es... ==
+
== Smarty es... ==
  
Smarty es un motor de plantillas y funciona como la capa vista de un modelo MVC. Smarty se puede complementar con los frameworks disponibles para PHP. No garantiza un buen diseño gráfico ni de aplicación, o una adecuada separación de la presentación.
+
Smarty es un motor de plantillas y funciona como la capa vista de un modelo MVC. Smarty se puede complementar con los frameworks disponibles para PHP. No garantiza un buen diseño gráfico ni de aplicación, o una adecuada separación de la presentación.  
  
En los procesos de desarrollo donde el rol de diseñador y programador no está cubierto por la misma persona, se hace muy complejo para el primero entender el código HTML relativo al diseño cuando este se encuentra ligado y determinado por el código PHP que se encarga de la lógica de la aplicación. Es aquí donde Smarty juega su papel, ya que al usarlo el diseñador trabaja simplemente con un código HTML y algunas etiquetas que representan el contenido.
+
En los procesos de desarrollo donde el rol de diseñador y programador no está cubierto por la misma persona, se hace muy complejo para el primero entender el código HTML relativo al diseño cuando este se encuentra ligado y determinado por el código PHP que se encarga de la lógica de la aplicación. Es aquí donde Smarty juega su papel, ya que al usarlo el diseñador trabaja simplemente con un código HTML y algunas etiquetas que representan el contenido.  
  
== Smarty no es... ==
+
== Smarty no es... ==
* Un framework
 
* Un MVC
 
* Una alternativa a Zend, Code Igniter, o CakePHP
 
  
== Filosofía ==
+
*Un framework
 +
*Un MVC
 +
*Una alternativa a Zend, Code Igniter, o CakePHP
  
El diseño de Smarty está dirigido por estos objetivos:
+
== Filosofía  ==
  
    * Limpia separación entre la presentación y lógica de la aplicación.
+
El diseño de Smarty está dirigido por estos objetivos:
    * Complementar PHP, no reemplazarlo.
 
    * Rápido desarrollo e implantación por parte de desarrolladores y diseñadores.
 
    * Rápido y sencillo de mantener.
 
    * Sintaxis fácil de entender y sin conocimientos de PHP.
 
    * Libre, código abierto
 
  
== Ejemplo ==
+
*Limpia separación entre la presentación y lógica de la aplicación.
 +
*Complementar PHP, no reemplazarlo.
 +
*Rápido desarrollo e implantación por parte de desarrolladores y diseñadores.
 +
*Rápido y sencillo de mantener.
 +
*Sintaxis fácil de entender y sin conocimientos de PHP.
 +
*Libre, código abierto
  
index.php
+
== Ejemplo  ==
<syntaxhighlight lang="php">
+
 
 +
=== En el archivo index.php ===
 +
<syntaxhighlight lang='php'>
 
require_once("smarty/Smarty.class.php");
 
require_once("smarty/Smarty.class.php");
 
   
 
   
Línea 70: Línea 71:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
index.tpl
+
=== En el archivo index.tpl ===
 
+
<syntaxhighlight lang='html4strict'>
<syntaxhighlight lang="html">
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
  <html lang="es">
 
  <html lang="es">
Línea 86: Línea 86:
 
   </body>
 
   </body>
 
  </html>
 
  </html>
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
=== Salida HTML generada ===
Salida HTML generada
+
<syntaxhighlight lang='html4strict'>
 
 
<syntaxhighlight lang="html">
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
  <html lang="es">
 
  <html lang="es">
Línea 105: Línea 104:
 
  </html>
 
  </html>
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
=== Explicación  ===
 +
 +
En la sección PHP se 'preparan' los datos que se desean mostrar, cuando se quiere que una variable esté disponible para su visualización en la salida HTML es necesario asignársela al objeto Smarty con la función assign.
 +
 +
En la sección HTML lo nuevo es el uso de las expresiones como '{$nombre}'. Esto indica al compilador de Smarty que debe sustituir esta etiqueta por el valor de la variable $nombre que le fue asignado en la sección PHP.
 +
 +
En la sección de salida HTML generada se puede ver como todas las etiquetas de tipo {$&lt;nombreEtiqueta&gt;} han sido sustituidas por sus valores.
 +
 +
== Otras características  ==
 +
 +
*Expresiones regulares
 +
*Bucles foreach, while
 +
*Sentencias condicionales if, elseif, else
 +
*Modificadores de variables (Todo a mayúsculas, o a minúsculas, etc...)
 +
*Funciones creadas por el usuario
 +
*Evaluación de expresiones matemáticas en la plantilla
 +
 +
== Críticas  ==
 +
 +
Los críticos de Smarty alegan la necesidad de aprender un nuevo pseudolenguaje, y cual sería la diferencia para los diseñadores entre aprender PHP o aprender Smarty. La documentación del proyecto está dividida en varias secciones, una de ellas titulada Smarty for designers (Smarty para diseñadores) en la que se detallan las funciones que deben ser utilizadas por estos. Además, el código Smarty es mucho mas comprensible, sencillo y mucho menos frágil que el código PHP.
 +
 +
== Sitios que utilizan Smarty  ==
 +
 +
Existe una gran cantidad de sitios utilizando Smarty como motor de plantillas, una lista mas completa se puede encontrar en http://smarty.incutio.com/?page=SitesUsingSmarty. Entre dichos sitios se pueden mencionar:
 +
 +
*[http://www.xoops.com XOOPS CMS]
 +
*[http://www.cmsmadesimple.org/ CMS Made Simple]
 +
*[http://www.tikiwiki.org/ Tiki CMS/Groupware]
  
== Sitios que utilizan Smarty ==
+
== Véase también  ==
  
Existe una gran cantidad de sitios utilizando Smarty como motor de plantillas, una lista mas completa se puede encontrar en [http://smarty.incutio.com/?page=SitesUsingSmarty]. Entre dichos sitios se pueden mencionar:
+
[[PHP]]  
* XOOPS CMS [http://www.xoops.com]
 
* CMS Made Simple [http://www.cmsmadesimple.org/]
 
* Tiki CMS/Groupware [http://www.tikiwiki.org/]
 
  
== Véase también ==
+
== Fuentes  ==
[[PHP]]
 
  
== Fuentes ==
+
*[http://www.smarty.net/ Página oficial de Smarty]
*[http://www.smarty.net/about_smarty]
 
  
[[Category:Solicitada]]
+
[[Category:Programación]][[Category:GNU]]

última versión al 13:42 27 abr 2011

Smarty
Información sobre la plantilla
Smarty.PNG
DesarrolladorMonte Ohrt, Messju Mohr http://www.smarty.net
Última versión estable3.0.7
GéneroMotor de plantillas
Sistemas Operativos compatiblesMultiplataforma
IdiomaMultilingüe
LicenciaLicencia Pública General Reducida de GNU

Smarty es un motor de plantillas para PHP, facilitando la separación de la capa de presentación (HTML/CSS) de la lógica de la aplicación (PHP), uno de los objetivos fundamentales del patrón MVC.

Smarty es...

Smarty es un motor de plantillas y funciona como la capa vista de un modelo MVC. Smarty se puede complementar con los frameworks disponibles para PHP. No garantiza un buen diseño gráfico ni de aplicación, o una adecuada separación de la presentación.

En los procesos de desarrollo donde el rol de diseñador y programador no está cubierto por la misma persona, se hace muy complejo para el primero entender el código HTML relativo al diseño cuando este se encuentra ligado y determinado por el código PHP que se encarga de la lógica de la aplicación. Es aquí donde Smarty juega su papel, ya que al usarlo el diseñador trabaja simplemente con un código HTML y algunas etiquetas que representan el contenido.

Smarty no es...

  • Un framework
  • Un MVC
  • Una alternativa a Zend, Code Igniter, o CakePHP

Filosofía

El diseño de Smarty está dirigido por estos objetivos:

  • Limpia separación entre la presentación y lógica de la aplicación.
  • Complementar PHP, no reemplazarlo.
  • Rápido desarrollo e implantación por parte de desarrolladores y diseñadores.
  • Rápido y sencillo de mantener.
  • Sintaxis fácil de entender y sin conocimientos de PHP.
  • Libre, código abierto

Ejemplo

En el archivo index.php

require_once("smarty/Smarty.class.php");
 
// Instanciar la clase de Smarty
$smarty = new Smarty();
 
// Configurar Smarty
$smarty->template_dir = "./templates/";
$smarty->compile_dir = "./templates_c/";
$smarty->config_dir = "./configs/";
$smarty->cache_dir = "./cache/";
 
// Establecer variables que se usarán en la plantilla
$smarty->assign("nombre", "José Manuel Pardo Pérez");
$smarty->assign("Dirección", "C/ Alpes, 992");
 
// Mostrar la plantilla
$smarty->display("index.tpl");

En el archivo index.tpl

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="es">
   <head>
     <title>Información del Usuario</title>
   </head>
   <body>
     <p>Información del Usuario:</p>
     <p>
       Nombre: {$nombre}<br />
       Dirección: {$direccion}
     </p>
   </body>
 </html>

Salida HTML generada

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="es">
   <head>
     <title>Información del Usuario</title>
   </head>
   <body>
     <p>Información del Usuario:</p>
     <p>
       Nombre: José Manuel Pardo Pérez<br />
       Dirección: C/ Alpes, 992
     </p>
   </body>
 </html>

Explicación

En la sección PHP se 'preparan' los datos que se desean mostrar, cuando se quiere que una variable esté disponible para su visualización en la salida HTML es necesario asignársela al objeto Smarty con la función assign.

En la sección HTML lo nuevo es el uso de las expresiones como '{$nombre}'. Esto indica al compilador de Smarty que debe sustituir esta etiqueta por el valor de la variable $nombre que le fue asignado en la sección PHP.

En la sección de salida HTML generada se puede ver como todas las etiquetas de tipo {$<nombreEtiqueta>} han sido sustituidas por sus valores.

Otras características

  • Expresiones regulares
  • Bucles foreach, while
  • Sentencias condicionales if, elseif, else
  • Modificadores de variables (Todo a mayúsculas, o a minúsculas, etc...)
  • Funciones creadas por el usuario
  • Evaluación de expresiones matemáticas en la plantilla

Críticas

Los críticos de Smarty alegan la necesidad de aprender un nuevo pseudolenguaje, y cual sería la diferencia para los diseñadores entre aprender PHP o aprender Smarty. La documentación del proyecto está dividida en varias secciones, una de ellas titulada Smarty for designers (Smarty para diseñadores) en la que se detallan las funciones que deben ser utilizadas por estos. Además, el código Smarty es mucho mas comprensible, sencillo y mucho menos frágil que el código PHP.

Sitios que utilizan Smarty

Existe una gran cantidad de sitios utilizando Smarty como motor de plantillas, una lista mas completa se puede encontrar en http://smarty.incutio.com/?page=SitesUsingSmarty. Entre dichos sitios se pueden mencionar:

Véase también

PHP

Fuentes