Smarty | |
---|---|
![]() | |
Developers | Monte Ohrt, Messju Mohr, Uwe Tews |
Initial release | 2000[1] |
Stable release | |
Repository | |
Written in | PHP |
Type | Template Engine |
License | LGPL |
Website | www |
Smarty is a web template system written in PHP. Smarty is primarily promoted as a tool for separation of concerns. [3] Smarty is intended to simplify compartmentalization, allowing the front-end of a web page to change separately from its back-end. Ideally, this lowers costs and minimizes the efforts associated with software maintenance.
Smarty generates web content through the placement of special Smarty tags within a document. These tags are processed and substituted with other code. Tags are directives for Smarty that are enclosed by template delimiters. These directives can be variables, denoted by a dollar sign ($), functions, logical or loop statements. Smarty allows PHP programmers to define custom functions that can be accessed using Smarty tags.
Since Smarty separates PHP from HTML, there are two files — one contains the presentation code: an HTML template, including Smarty variables and tags - {$title_text|escape}{$body_html}
- which might look like this:
<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><title>{$title_text|escape}</title></head><body>{* This is a little comment that won't be visible in the HTML source *}{$body_html}</body><!-- this is a little comment that will be seen in the HTML source --></html>
The business logic to use the Smarty template above could be as follows:
define('SMARTY_DIR','smarty-2.6.22/');require_once(SMARTY_DIR.'Smarty.class.php');$smarty=newSmarty();$smarty->template_dir='./templates/';$smarty->compile_dir='./templates/compile/';$smarty->assign('title_text','TITLE: This is the Smarty basic example ...');$smarty->assign('body_html','<p>BODY: This is the message set using assign()</p>');$smarty->display('index.tpl');