Smarty – obiektowa biblioteka skryptów służąca do tworzenia szablonów dla aplikacji PHP. Pozwala na separację logiki aplikacji (PHP) od jej warstwy prezentacyjnej (HTML).
Smarty działa poprzez umieszczanie w szablonach znaczników, które następnie są zastępowane generowaną przez aplikację treścią. Pakiet umożliwia stosowanie struktur kontrolnych (decyzyjnych, pętli, itp). System Smarty cechuje się wysoką wydajnością dzięki kompilowaniu szablonów do postaci skryptów PHP, a także wbudowanemu systemowi buforowania.
Smarty jest pakietem o otwartym kodzie źródłowym, udostępnianym na zasadach licencji Lesser GPL. Można w łatwy sposób wzbogacać jego funkcjonalność poprzez wtyczki.
Plik szablonu Smarty może wyglądać następująco:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>{$tytul}</title>
</head>
<body> {* To jest komentarz, NIE będzie widoczny w wynikowym pliku HTML *}
<p>{$tresc}</p>
</body><!-- To jest komentarz, który BĘDZIE widoczny w wynikowym pliku HTML -->
</html>
Taki plik szablonu można wykorzystać, tworząc plik PHP:
require 'smarty-2.6.9/Smarty.class.php';
$smarty = new Smarty;
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->config_dir = './konfiguracja/';
$smarty->cache_dir = './cache/';
$smarty->caching = 0;
$smarty->error_reporting = ~E_ALL;
$Zasady_Bezpieczenstwa = new Smarty_Security;
$Zasady_Bezpieczenstwa->php_handling = Smarty::PHP_REMOVE;
$Zasady_Bezpieczenstwa->php_functions = null;
$smarty->enableSecurity($Zasady_Bezpieczenstwa);
$smarty->assign('tytul', 'TYTUŁ: To jest prosty przykład wykorzystania Smarty ...');
$smarty->assign('tresc', 'TREŚĆ: To jest wiadomość, ustawiona funkcją assign()');
$smarty->display('index.tpl');