Шаблонизаторы для PHP

Язык PHP сам по себе может использоваться как шаблонизатор: Изолирование от HTML (смешанный режим). Недостатком PHP, как шаблонизатора является его многословность, например при экранировании вывода данных.

Различают активные (pull) и пассивные (push) шаблоны.

Активный шаблон, работает как независимая программа со своими собственными операторами, циклами, командами подгрузки содержимого из других файлов и т.д.. Для дизайнера это выглядит сложно. Поэтому обычно для упрощения синтаксиса активных шаблонов инструкции PHP (foreach, if и.д.) "маскируют" специальными псевдотегами. В дальнейшем активный шаблон специальным скриптом- транслятором переводится в обычный код на PHP, который в дальнейшем и выполняется. Недостаток активных шаблонов, что их как правило напрямую нельзя открывать в браузере - будет просто видна мешанина символов, даже если шаблон сохранен в файле HTML.

Пассивные шаблоны не включают никаких исполняемых инструкций. Пассивные шаблоны удобны когда мало блоков и много статического HTML кода.

Шаблонизаторы - трансляторы активных шаблонов.

Язык XSLT является классическим представителем систем активных шаблонов.

Шаблонизаторы - для пассивных шаблонов.

Изолирование от HTML

Если вы создаете заголовок страницы динамически с помощью PHP, затем идет статическое содержание страницы и все заканчивается динамически создаваемым футером, можно сделать так:

<?php
PHP-код динамического заголовка
?>
Статичный HTML-код
<?php
PHP-код динамического футера
?>

Более того, PHP- код продолжает выполняться с того места, на котором он оборвался, так что можно его разрывать даже так:

<?php
Выражение IF {
?>
HTML-код, если условие IF выполняется
<?php
} else {
?>
HTML-код, если условие IF не выполняется
<?
}
?>
Помните, что всегда нужно закрывать выражения IF и циклы - это легко забыть.
PHP допускает короткие теги <? и ?>, однако использовать их нежелательно, так как они доступны только если включены с помощью конфигурационной директивы php.ini short_open_tag, либо если PHP был сконфигурирован с опцией –enable-short-tags .

HTML_Template_IT

Homepage: HTML_Template_IT

HTML_Template_IT используется для пассивных шаблонов. Циклы, условия обрабатываются в php- файле, а шаблон разбит на блоки, которые заполняются отдельно друг от друга. Шаблонизатор понимает вложенные блоки.

Если какой - нибудь блок или переменная не были заполнены - в конечном html файле они выводиться не будут.
  • Установка
    # aptitude install php-html-template-it
  • Пример. Замена в шаблоне переменной 'code_body' на наше значение.
    <?php
    require_once 'HTML/Template/IT.php';  // Полный путь к библиотеке /usr/share/php/HTML/Template/IT.php
    
    $tpl = new HTML_Template_IT();
    $tpl->loadTemplatefile('tpl/main.html', true, true); // Читаем шаблон
    $tpl->setVariable('code_body','Здесь заменили code_body!!!'); 
    print $tpl->show(); // выведем финальную страницу пользователю
    ?>

    Часть файла tpl/main.html:

                            <div class="blockg">
                                <!-- BEGIN block_body -->
                                <p> {code_body}</p>
                                <!-- END block_body -->
                            </div>
  • Синтаксис блока
    <!-- BEGIN имя блока -->
    {переменная блока}
    <!-- END имя блока -->
  • Пример. Заменить в шаблоне блок несколькими значениями. Блок:
    <!-- BEGIN block_list_countries -->
        <p> {list_countries}</p>
    <!-- END block_list_countries -->

    Функция замены:

    <?php
    
    require_once 'HTML/Template/IT.php';  // /usr/share/php/HTML/Template/IT.php
    $tpl = new HTML_Template_IT();
    $tpl->loadTemplatefile('tpl/main.html', true, true);
    
    $arr=array("first", 5 => "second", "third");
    foreach ($arr as $value) {
    	$tpl ->setCurrentBlock('block_list_countries');
    	$tpl ->setVariable('list_countries', $value);
    	$tpl ->parseCurrentBlock();
    }
    print $tpl->show(); // выведем финальную страницу пользователю
    ?>
PQ VPS сервера в 28+ странах.