Smarty - простой шаблонизатор PHP

Когда то лет цать назад когда я только только начал разрабатывать сайты, на голом PHP, HTML, CSS и JS, один знакомый показал мне Smarty, для меня это стало настоящей находкой.

Когда то лет цать назад когда я только только начал разрабатывать сайты, на голом PHP, HTML, CSS и JS, один знакомый показал мне Smarty, для меня это стало настоящей находкой. Ладно если бы я делать обычные сайты организациям - просто любой движок и редактор страниц, но заказы становились все изощреннее, одному такую фишку подай, другому - другую. Я конечно пробовал делать сайты на WP, Joomla, Bitrix но когда не находится нужного плагина, разработка сводится к вставке костылей куда не надо. По этому большинство сайтов что я делаю - сделаны на собственном движке, для которого легко написать новый модуль для нового заказчика. Именно с тех лохматых годов я и использую в собственном движке Smarty.

Все заученные слоганы - типа Smarty позволяет отделить PHP от верстки - и так можно найти в документации. Лучше обсудим то, о чем в документации мало информации.

Сперва расскажу почему стоит им пользоваться.

Не смотря на название "Шаблонизатор" - это не набор шаблонов для сайта, это подключаемый фреймворк который позволяет писать модули к сайту на чистом HTML без вставок PHP кода. Да, вы вставляете в код HTML переменные которые попадают из PHP в шаблонизатор Smarty, в любом случае код гораздо читабельнее и проще в доработке.

Плюс этот фреймворк прекрасно умеет кешировать! Да, это есть в официальной документации, но где кешировать - вы выбираете сами, хоть в RAM-диске! Что заметно увеличивает скорость отдачи страницы пользователю - то есть PHP код уже не выполняется, а загружается страница из кэша.

У Smarty богатая документация, можно найти почти все ответы, но все равно мне пришлось кое-что додумывать, например как пройтись по двух мерному массиву. Когда вы хотите вывести из базы данных набор записей, тут же возникает вопрос... как... так как в документации только перебор одномерного массива.

Если вы получаете массив типа $massiv[0]['id'], $massiv[1]['id'], $massiv[0]['name'], $massiv[1]['name'] (обычный двухмерный массив $massiv), вывести его можно так:

{section name=customer loop=$massiv}
{if $massiv[customer].id}
{$massiv[customer].id}{$massiv[customer].name}
{/if}
{/section}

Так же у Smarty богатый набор плагинов-модификаторов, но всегда можно написать свой недостающий.

Например, мне не хватало модификатора обрезающего строку до определенного количества символов, чтоб допустим сделать список страниц в категории и выводить краткое описание, делается это просто, в каталоге Smarty -> lib -> plugins создаем файл modifier.ВАШЕ_НАЗВАНИЕ.php и в него пишем функцию, которая обрабатывает переменную так как вам надо, у меня много таких самописных плагинов, например этот же - который обрезает часть строки:

function smarty_modifier_substr($string, $len){
if(strlen($string)>$len) {
$res=mb_substr(strip_tags($string), 0, $len, 'UTF-8') . '...';
}else {
$res=$string;
}
return $res;
}

Соответственно вызываем его в HTML коде:

{$string|substr:100}

Где $string - строка, substr - функция обезки, 100 - длина сколько нам надо оставить символов. То есть расширить функционал Smarty - как два байта переслать!

Не смотря на то, что официальный сайт Smarty выглядить как из 90-х - новые версии фреймворка выходят до сих пор. Так же (точно не скажу какие, так как не помню, но находил в описаниях) некоторые популярные движки используют Smarty для построения шаблонов, что говорит о том, что данный фреймворк можно смело использовать, так как он продолжает развиваться.

Спасибо, что дочитали, если возникнут вопросы - задайте в комментариях, я с радостью на них отвечу =)