Думаю нужно рассказать с чем работаю я 🙂 А именно о шаблонизаторе Blitz.
Blitz — это блочный шаблонизатор, что принципиально отличает его от Smarty и подобных.
Smarty по сравнению с Blitz — язык программирования.
Синтаксис шаблонов Blitz основан на 3х конструкциях:
- блоки (они же контексты): {{BEGIN blockName}}содержимое блока{{END}}
- переменные: {{$var}}
- вызовы функций {{myFunc($params)}}
Циклы, условыне операторы и другой «богатый» синтаксис отсутствует. Это гарантирует разделение логики
приложения от логики представления. Как следствие, шаблоны с ростом проекта не превращаются в кашу.
С точки зрения организации кода, компонент View (MVC) можно условно разделить на две части:
- шаблон (HTML-файл с Blitz-тегам);
- контроллер шаблона — это объект Blitz управляющий обработкой шаблона (не путать с контроллером веб-приложения).
Контроллер шаблона несет всю избыточную для шаблона логику с которой программисты справляются гораздо
эффективнее чем верстальщики.
Несколько примеров:
1. По традиции: Hello, world!
Шаблон template.tpl:
Hello, {{ $name }}!
скрипт:
$template = new Blitz('template.tpl'); echo $template->parse(array('name' => 'world'));
2. Шаблон можно загрузить не только из файла:
Для экспериментов с Blitz вы можете загрузить
шаблон прямо в коде скрипта из переменной:
$template = new Blitz(); $template->load('Hello, {{$name}}!'); echo $template->parse(array('name' => 'world'));
3. Блоки (контексты):
Блок это часть шаблона, которая может быть отображена при необходимости:
hello {{ BEGIN block }} {{ $name }} {{ END }}
По умолчанию, этот шаблон выводит строку «hello », блок будет скрыт.
Следующий код выведет блок один раз:
$template = new Blitz('some.tpl'); $template->block('/block', array('name' => 'Dude')); echo $template->parse();
Результат
"hello Dude ".
Синоним Блока — контекст. Вывод блока называется итерацией.
Для наглядности можно указать название блока после оператора END:
{{ END block }}.
4. Вывод блока несколько раз (списки или циклы):
Каждый блок может быть «итерирован» несколько раз для вывода списков (аналог циклов в Smarty), код контроллера шаблона:
foreach (array('Dude', 'Sobchak', 'Donny') as $i_name) { $template->block('/block', array('name' => $i_name); }
Выполнив данный код для шаблона из предыдущего примера, мы увидим:
"Hello Dude Donny Sobchak "
5. Условия
Теперь попробуем вывести тот же список, но разделенный запятыми.
Это можно сделать двумя способами: использовать блок или оператор if.
Для начала используем блок:
hello {{ BEGIN block }}{{ BEGIN comma }},{{ END }} {{ $name }} {{ END }}
и проитерируем его в цикле:
$need_comma = FALSE; foreach (array('Dude', 'Sobchak', 'Donny') as $i_name) { if ($need_comma) { $template->block('/block/comma'); } else { $need_comma = TRUE; } $template->block('/block', array('name' => $i_name); }
По мне, так выглядит не слишком изящно. В таких простых случаях уместнее использовать оператор if:
hello {{ BEGIN block }}{{ if($_first,'',',') }} {{ $name }} {{ END }}.
В Blitz для блоков есть предустановленные переменные: $_first (первая итерация),
$_last (последняя итерация), $_total (общее кол-во), $_num, $_even, $_odd.
По названием легко догататься о назначении. Также можно определить
свои переменные из контроллера шаблона.
Ну ссылка где его брать: http://alexeyrybak.com/blitz/all-releases/