Smarty
From Wikipedia, the free encyclopedia
- For the candies with a similar name, please see Smarties
| Smarty | |
| Image:Smarty-logo.gif
<tr><th>Developer:</th><td>Monte Ohrt, Messju Mohr</td></tr><tr><th>Latest release:</th><td>2.6.14 / 28th May 2006</td></tr> | |
| Use: | Template Engine |
|---|---|
| Website: | smarty.php.net |
Smarty is a web template system written in PHP. Smarty separates PHP, as a business logic, from HTML, a presentation logic, and generates web content by the placement of special Smarty tags within a document (i.e. variable substitution).
Tags are variables such as {$variable}, and a range of logical and loop operators.
This makes for much cleaner coding and more flexible modification. For instance, one could typically modify a Smarty-based application's appearance (i.e. skin) easily, without ever looking at any business logic or PHP code. This compartmentalization also allows for the back-end to change separate from the layout.
Smarty allows template programming with several built in features, like:
- regular expressions
- foreach, while
- if, elseif, else
- nl2br - For example {$variable|nl2br}
and many more features. Other template engines also support these commands in templates.
- Create your own functions
- Print the date, do mathematical equations within the template
[edit] Code example
Since Smarty separates PHP from HTML, you have two files:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>{$title_text}</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body> {* This is a little comment that won't be visible in HTML source *}
<p>{$body_text}</p>
</body><!-- this is a little comment that will be seen in source -->
</html>
In the business logic code you can configure Smarty to use this template:
define('SMARTY_DIR', 'smarty-2.6.9/' );
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty;
$smarty->config_dir = SMARTY_DIR;
$smarty->template_dir = './tmpl';
$smarty->compile_dir = './tmpl/compile';
$smarty->compile_check = TRUE;
$smarty->debugging = FALSE;
$smarty->assign('title_text', 'TITLE: This is the Smarty basic example ...');
$smarty->assign('body_text', 'BODY: This is the message set using assign()');
$smarty->display('index.tpl');
[edit] See also
- Content Management System
- PRADO, a component-based web development framework for PHP5
- CakePHP, a PHP web application framework
- PHROOT, PHP Rapid Object Oriented Technology Framework Project
[edit] External links
- Official site
- PHP Templating with Smarty by Cezar Floroiu - Smarty tutorial
- Smarty vs. XML/XSLT - from DevPapers.com by Sergey Makogon
- Article "Templates, Gift from Heaven or Syntactic Junk Food?" by Nathan Oostendorp
- Chapter from Smarty PHP Template Programming and Applications book.
- Smarty Cheat Sheet Smarty Cheat Sheet for Templates Designers and Programmers
- Timestretch: PHP, MySQL, and Smarty Programming - Also see the PHP2 page for more.
- PHP Smarty Tools - Using Smarty in PhpEDde:Smarty

