Sintaxis de smarty Capa Motor de Templates

Funciones de smarty mas usadas en html


Estas son las funciones de smarty mas usadas en la capa vista:
En este tutorial se explicaran las funciones de un modo muy resumido, para encontrar la sintaxis exacta y cada descripción de cada función de un modo muy detallado, debes ingresar a: Manual Smarty
  1. Include
  2. If/else/esleif
  3. For
  4. Foreach
  5. Section, sectionelse
  6. Literal
  7. Assign
  8. $var=

1) Include: esta función sirve para incluir desde un template otro template.
Ejemplo:

<html>
<head></head>
<body>
{include file='promotion_one.tpl'}

Text HERE

{include file='promotion_two.tpl'}
</body>
</html>


2) If/else/esleif: uso de los condicionales tal como en php, smarty tiene sus propias etiquetas también para cada condicional, por ejemplo se puede usar tanto == como eq, != como neq, entre otros.
Ejemplo:

{if $name eq 'Fred'}
Welcome Sir.
{elseif $name eq 'Wilma'}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}


3) For: es un for sencillo, por lo general cuando se necesita iteraciones de un número a otro, sin saltos ni en desorden ni nada.
Ejemplo:

{for $foo=1 to 3}
Number: {$foo},
{/for}

La salida por pantalla seria:

Number: 1, Number: 2, Number 3,


4) Foreach: su uso es parecido al foreach de php, simplemente hace iteraciones mientras siga encontrando elementos dentro de un vector (estos elementos no necesariamente deben estar organizados numéricamente, puede ser organizados por strings "arrays asociativos")
Ejemplo:
- Tenemos el siguiente controlador example_foreach.php en la ruta work/example_foreach.php

<?php

require('configs/include.php');

class 
c_example_foreach extends super_controller {

    public function 
display()
    {        
        
$arr = array('red''green''blue');
        
$this->engine->assign('my_colors'$arr);
        
$people = array('fname' => 'John''lname' => 'Doe''email' => 'j.doe@example.com');
        
$this->engine->assign('my_people'$people);
        
$this->engine->assign('title','Examples Smarty');
        
$this->engine->display('header.tpl');
        
$this->engine->display('example_foreach.tpl');
        
$this->engine->display('footer.tpl');
    }
    
    public function 
run()
    {
        
$this->display();
    }
}

$call = new c_example_foreach();
$call->run();

?>

- Tenemos el siguiente template example_foreach.tpl, en la ruta work/templates/t_dark/example_foreach.tpl

{foreach $my_colors as $color}
Color: {$color} -
{/foreach}

{foreach $my_people as $value}
{$value@key}: {$value} -
{/foreach}

La salida por pantalla al ejecutar desde el navegador el archivo work/example_foreach.php seria:

Color: red - Color: green - Color: blue -
fname: John - lname: Doe - email: j.doe@example.com -

Demo Foreach

5) Section, sectionelse: es otro tipo de for o foreach, este no permite arrays asociativos (lo cual indica que el vector que se le envié debe estar organizado numéricamente), el section tiene 2 atributos requeridos, el loop que es la variable a iterar, y el name que es el nombre que se da al section (puede ser cualquier cosa).
Ejemplo:
- Tenemos el siguiente controlador example_section.php en la ruta work/example_section.php

<?php

require('configs/include.php');

class 
c_example_section extends super_controller {

    public function 
display()
    {        
        
$data = array(1000,1001,1002);
        
$this->engine->assign('custid',$data);
        
$this->engine->assign('title','Examples Smarty');
        
$this->engine->display('header.tpl');
        
$this->engine->display('example_section.tpl');
        
$this->engine->display('footer.tpl');
    }
    
    public function 
run()
    {
        
$this->display();
    }
}

$call = new c_example_section();
$call->run();

?>

- Tenemos el siguiente template example_section.tpl, en la ruta work/templates/t_dark/example_section.tpl

{section name=i loop=$custid}
Id: {$custid[i]},
{/section}

La salida por pantalla al ejecutar desde el navegador el archivo work/example_section.php seria:

Id: 1000, Id: 1001, Id: 1002,

Demo Section

6) Literal: como ya se había explicado anteriormente: todo lo que vaya dentro de {literal}{/literal} es código javascript o css que se puede insertar normalmente, si no se inserta dentro de estas etiquetas de "literal" no podrá ser cargado normalmente esto debido a que tanto javascript como css usan las llaves con otro fin diferente al de smarty
Ejemplo:
<html>
<head>
{literal} aquí va el código de inserción con la ruta de un archivo css, o js que se quiera incluir {/literal}
</head>
<body>
</body>
</html>


7) Assign: es usado para asignar variables de template durante la ejecución de un template (osea dentro de un mismo template)
Ejemplo:

<html>
<head></head>
<body>
{assign var="name" value="Bob"}
The name is {$name}.
</body>
</html>

La salida por pantalla seria:

The name is Bob.


8) $var=
es una forma corta de la función anterior (assign) permite asignar variables dentro del template
Ejemplo:

<html>
<head></head>
<body>
{$name='Bob'}
The name is {$name}.
</body>
</html>

La salida por pantalla seria:

The name is Bob.
Sintaxis de smarty Capa Motor de Templates