Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
Скачать библиотеку и посмотреть документацию можно на https://www.smarty.net/download
Содержание архива smarty-3.1.32.zip переносим в директорию /smarty/
в корень сайта, в index.php
подключаем библиотеку и задаем переменные шаблона.
require '/smarty/libs/Smarty.class.php';
$smarty = new Smarty;
// Включение кэширования.
$smarty->caching = true;
// Время жизни кеша в секундах (-1 - включает его навсегда).
$smarty->cache_lifetime = 120;
// Передача значений в шаблон:
$smarty->assign('h1', 'Заголовок H1');
$smarty->assign('text', 'Hello World...');
$smarty->assign('number', 200);
// Обычный массив.
$smarty->assign(
'array_1', array(
'Понедельник',
'Вторник',
'Среда'
)
);
// Ассоциативный массив.
$smarty->assign(
'array_2', array(
'item_a' => 'Январь',
'item_b' => 'Февраль',
'item_c' => 'Март'
)
);
// Многомерный массив.
$smarty->assign(
'array_3', array(
array(
'id' => 1,
'name' => 'Весна',
),
array(
'id' => 2,
'name' => 'Лето',
),
array(
'id' => 3,
'name' => 'Осень',
),
)
);
// Вывод шаблона.
$smarty->display('index.tpl');
Далее нужно создать директорию /templates/
, а в ней файл шаблона index.tpl
.
В шаблонах Smarty применяются следующие конструкции:
В PHP эта запись аналогична:
Заголовок H1
Также можно вывести значение массива по ключу.
В PHP это выглядело бы так:
<?php echo $array_1[0]; ?>
<?php echo $array_2['item_a']; ?>
<?php echo $array_3[0]['name']; ?>
Понедельник
Январь
Весна
Smarty позволяет задавать значения переменных прямо в шаблоне с помощью конструкции assign
.
Поддерживаются арифметические выражения и катенация:
329
Катенация переменной с текстом:
Заголовок H1 - добавленный текст
Катенация переменных:
Заголовок H1 Hello World...
Если переменная не существует или пуста, можно задать текст который будет выводится вместо нее.
Переменные можно модифицировать встроенными функции, например, перевести символы в верхний регистр.
Допустимо комбинировать сразу несколько функций:
lower |
Переводит строку в нижний регистр |
upper |
Переводит строку в верхний регистр |
capitalize |
Преобразовывает первые буквы каждого слова в заглавные |
strip |
Заменяет все повторяющиеся пробелы |
nl2br |
Заменяет перевод строки в тэг <br /> |
strip_tags |
Удаляет html тэги |
escape |
Используется для кодирования спецсимволов |
Полный список функций на https://www.smarty.net
В шаблонах доступны все глобальные переменные PHP, получить значение можно через объект $smarty
.
{$smarty.get.ключ} |
$_GET |
{$smarty.post.ключ} |
$_POST |
{$smarty.session.ключ} |
$_SESSION |
{$smarty.coocies.ключ} |
$_COOCIES |
{$smarty.request.ключ} |
$_REQUEST |
Как и в PHP, в Smarty доступны управляющие конструкции, операторы и необходимые функции.
If
If, else
Switch Case
Его нет, но вместо него можно использовать конструкцию if
, else if
, else
.
Foreach
Конструкция fereach
своеобразная, в примере идет перебор массива $array_3
и вывод значения по ключу name
.
Весна
Лето
Осень
For
<p>1</p>
<p>2</p>
<p>3</p>
Полный список на smarty.net
Include
Подключает файл шаблона в директории /templates/
.
literal
Вставки JS и CSS нужно обворачивать тегами {literal}
т.к. фигурные скобки конфликтуют со Smarty и <script>
или <style>
просто не выведутся на странице.
Strip
Удаляет пробелы между HTML тегами.
<ul><li>2</li><li>2</li><li>3</li></ul>