Функции компилятора, как вы наверное догадались, вызываются только в процессе компиляции шаблона. Они могут быть полезными для вставки кода PHP или чувствительного ко времени статического контента в шаблон. Если одновременно зарегестрированы две одноименные функции - пользовательская и компилятора, то приоритет будет у функции компилятора.
mixed smarty_compiler_name( |
$tag_arg, | |
&$smarty) ; |
string $tag_arg
;object &$smarty
;Функция компилятора имеет два параметра: строку аргументов тэга - чаще всего это все, что следует от наименования функции до правого разделителя, и объект Smarty. Функция должна возвращать PHP-код для вствки в скомпилированный шаблон.
Смотрите также register_compiler_function(), unregister_compiler_function().
Пример 16.6. Простой пример функции компилятора
<?php /* * Smarty plugin * ------------------------------------------------------------- * Файл: compiler.tplheader.php * Тип: compiler * Имя: tplheader * Назначение: вывести заголовок, содержащий имя исходного файла и * время, когда он был скомпилирован. * ------------------------------------------------------------- */ function smarty_compiler_tplheader($tag_arg, &$smarty) { return "\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';"; } ?>
Эта функция может быть вызвана из шаблона следующим образом:
{* Функция выполняется только при компиляции шаблона *} {tplheader}
Результирующий код PHP в скомпилированном шаблоне будет выглядеть примерно так:
<?php echo 'index.tpl compiled at 2002-02-20 20:02'; ?>