K4:Компиляция шаблонов
From In-Portal Developers Guide
Current revision (18:09, 4 November 2009) (view source) (дополнение) |
|||
| (One intermediate revision not shown.) | |||
| Line 29: | Line 29: | ||
== Как проверить все шаблоны в проекте на предмет наличия ошибок == | == Как проверить все шаблоны в проекте на предмет наличия ошибок == | ||
| - | Чтобы проверить все шаблоны на наличие синтаксических ошибок необходимо | + | Чтобы проверить все шаблоны на наличие синтаксических ошибок необходимо активизировать [[K4:Debugger|Debugger]], подключиться к административной консоли, в меню "<code>Configuration</code>" выбрать пункт "<code>System Tools</code>", нажать кнопку "<code>Compile Templates (with NParser)</code>", принять во внимание все обнаруженные и отображённые ошибки. После исправления ошибок процедуру можно повторить, чтобы убедиться в их полном отсутствии. |
| - | + | ||
| + | == Система проверки ошибок в классе NParser == | ||
| + | <code>NParser</code> производит валидацию кода на предмет соответствия стандартам синтаксиса <code>XML</code>. Сообщается о неправильно закрытых или открытых тэгах, об использовании недекларированных тэгов. | ||
== Заметки редактора == | == Заметки редактора == | ||
Current revision
| This article is not finished yet! You see this message because current Article is finished yet or contains unverified information. How to write an Article. |
| ||
|---|---|---|
| Статьи в этой категории | ||
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. Сообщается о неправильно закрытых или открытых тэгах, об использовании недекларированных тэгов.
Заметки редактора
| текст | коррекция |
|---|---|
| Аналог этого кода на php (т.е. скомпилированный шаблон) | Приведённый после упомянутого фрагмента текста код не может находиться в скомпилированном шаблоне. |
