In-Portal Developers Guide

This is a wiki-based Developers Guide for In-Portal Open Source CMS. The purpose of this guide is to provide advanced users, web developers and programmers with documentation on how to expand, customize and improve the functionality and the code the In-Portal software. Please consider contributing to our documentation writing effort.

K4:Компиляция шаблонов

From In-Portal Developers Guide

Jump to: navigation, search

Работа с шаблонами Работа с шаблонами
Статьи в этой категории

Contents

Что такое компиляция шаблонов и зачем она нужна

Компиляция шаблона - это обработка исходного шаблона, с заменой всех тэгов аналогами в php коде. Однако замена не происходит прямо в файле шаблона, для хранения скомпилированных шаблонов отведена специальная директория: system/cache (в которой воссоздаётся структура кэшируемых файлов и директорий). При обращении к шаблону система проверяет - не содержит ли cache этот файл в уже скомпилированном виде, а если да - то не истёк ли "срок годности" для этого скомпилированного файла. В результате, если все требования выполнены - используется скомпилированный шаблон, иначе шаблон сначала компилируется и только потом используется. Пример, шаблон может содержать подобную конструкцию:

<inp2:m_Get var="test" />

Для того, чтобы получить окончательный результат (значение переменной test) будут проделаны следующие шаги:

  • Получение содержимого шаблона (скриптом, т.е. на уровень выше, чем интерпретатор php)
  • Обработка парсером
  • Вызов парсером необходимой php функции
  • Вывод полученного результата

Аналог этого кода на php (т.е. скомпилированный шаблон):

$application =& kApplication::Instance();
$application->GetVar('test');

Необходимые операции:

  • Получение содержимого файла (интерпретатором php)
  • Вызов необходимой php функции
  • Вывод полученного результата

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

Как нужно называть блоки и параметры блоков, чтобы не было конфликтов при компиляции шаблона

Блоки и их параметры необходимо называть уникальными (не повторяющимися) именами, при этом нужно избегать использования стандартных названий. Например использование параметра под именем name в custom-тэге с довольно большой долей вероятности может привести к возникновению ошибок при рекурсивном или последовательном вызове сторонних тэгов с передачей параметров.

Как проверить все шаблоны в проекте на предмет наличия ошибок

Чтобы проверить все шаблоны на наличие синтаксических ошибок необходимо активизировать Debugger, подключиться к административной консоли, в меню "Configuration" выбрать пункт "System Tools", нажать кнопку "Compile Templates (with NParser)", принять во внимание все обнаруженные и отображённые ошибки. После исправления ошибок процедуру можно повторить, чтобы убедиться в их полном отсутствии.

Система проверки ошибок в классе NParser

NParser производит валидацию кода на предмет соответствия стандартам синтаксиса XML. Сообщается о неправильно закрытых или открытых тэгах, об использовании недекларированных тэгов.

Заметки редактора