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 (т.е. скомпилированный шаблон) | Приведённый после упомянутого фрагмента текста код не может находиться в скомпилированном шаблоне. |