Что такое Blitz Templates?

bb0bbf7f2968125a38a09823de029bffДумаю нужно рассказать с чем работаю я :) А именно о шаблонизаторе .

Blitz — это блочный шаблонизатор, что принципиально отличает его от Smarty и подобных.
Smarty по сравнению с Blitz — язык программирования.

Синтаксис шаблонов Blitz основан на 3х конструкциях:

  1. блоки (они же контексты): {{BEGIN blockName}}содержимое блока{{END}}
  2. переменные: {{$var}}
  3. вызовы функций {{myFunc ($params)}}


Циклы, условыне операторы и другой «богатый» синтаксис отсутствует. Это гарантирует разделение логики
приложения от логики представления. Как следствие, шаблоны с ростом проекта не превращаются в кашу.

С точки зрения организации кода, компонент View (MVC) можно условно разделить на две части:

  1. шаблон (HTML-файл с Blitz-тегам);
  2. контроллер шаблона — это объект 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/

Запись навигация

Top