PHP

Шаблонизатор Smarty

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 применяются следующие конструкции:

1

Вывод переменных

{$h1}

В PHP эта запись аналогична:

<?php echo $h1; ?>
Заголовок H1

Также можно вывести значение массива по ключу.

{$array_1[0]}
{$array_2.item_a}
{$array_3[0].name}

В PHP это выглядело бы так:

<?php echo $array_1[0]; ?>
<?php echo $array_2['item_a']; ?>
<?php echo $array_3[0]['name']; ?>
Понедельник
Январь
Весна
2

Задание значений переменных

Smarty позволяет задавать значения переменных прямо в шаблоне с помощью конструкции assign.
Поддерживаются арифметические выражения и катенация:

{assign var="new" value="`$number + 129`"}
{$new}
329

Катенация переменной с текстом:

{assign var="new" value="{$h1} - добавленный текст"}
{$new}
Заголовок H1 - добавленный текст

Катенация переменных:

{assign var="new" value="{$h1} {$text}"}
{$new}
Заголовок H1 Hello World...
3

Значение по умолчанию

Если переменная не существует или пуста, можно задать текст который будет выводится вместо нее.

{$title|default: 'ОШИБКА'}
4

Применение строковых функций

Переменные можно модифицировать встроенными функции, например, перевести символы в верхний регистр.

{$h1|upper}

Допустимо комбинировать сразу несколько функций:

{$h1|upper|strip|default: 'ОШИБКА'}
lower Переводит строку в нижний регистр.
upper Переводит строку в верхний регистр.
capitalize Преобразовывает первые буквы каждого слова в заглавные.
strip Заменяет все повторяющиеся пробелы.
nl2br Заменяет перевод строки в тэг <br />.
strip_tags Удаляет html тэги.
escape Используется для кодирования спецсимволов.
Полный список функций на https://www.smarty.net
5

Глобальные переменные PHP

В шаблонах доступны все глобальные переменные PHP, получить значение можно через объект $smarty.

{$smarty.get.ключ} $_GET
{$smarty.post.ключ} $_POST
{$smarty.session.ключ} $_SESSION
{$smarty.coocies.ключ} $_COOCIES
{$smarty.request.ключ} $_REQUEST
6

Управляющие конструкции

Как и в PHP, в Smarty доступны управляющие конструкции, операторы и необходимые функции.

If

{if !empty($h1)}
    ...
{/if}

If, else

{if !empty($h1)}
    ...
{else} 
    ...                    
{/if}

Switch Case

Его нет, но вместо него можно использовать конструкцию if, else if, else.

{if !empty($h1)}
    ...
{else if !empty($title)}
    ...    
{else} 
    ...                  
{/if}
7

Циклы

Foreach 

Конструкция fereach своеобразная, в примере идет перебор массива $array_3 и вывод значения по ключу name.

{section name=row loop=$array_3}
    {$array_3[row].name}
{/section}
Весна
Лето
Осень

For

{for $foo=1 to 3}
    <p>{$foo}</p>
{/for}
<p>1</p>
<p>2</p>
<p>3</p>
8

Встроенные функции Smarty

Полный список на smarty.net

Include

Подключает файл шаблона в директории /templates/.

{include file='footer.tpl'}    

literal

Вставки JS и CSS нужно обворачивать тегами {literal} т.к. фигурные скобки конфликтуют со Smarty и <script> или <style> просто не выведутся на странице.

{literal}    
    <script>
        ...
    </script>
{/literal}

Strip

Удаляет пробелы между HTML тегами.

{strip}
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
{/strip}
<ul><li>2</li><li>2</li><li>3</li></ul>
12 июля 2018
PHP
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...