What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
                ![]() 
                ![]() 
              
For sponsorship, advertising, news or other inquiries, contact us at:
| void smarty_function_name( | $params, | |
| &$smarty ); | 
array $params;object &$smarty;
  Все атрибуты, передаваемые в функции шаблона из самого шаблона,
  хранятся в $params в виде ассоциативного массива.
  Получить доступ к его значениям можно напрямую:
  $params['start'] или используя
  extract($params) для импорта в таблицу.
 
  Вывод (возвращаемое значение) функции будет подставлен в место расположения
  тэга функции в шаблоне (функция fetch  например).
  В качестве альтернативы, функция может выполнять какие либо действия
  без какого-либо вывода (assign функция).
 
  Если функция должна присвоить(assign) значения  некоторым переменным в шаблоне или
  использовать иные возможности Smarty, то можно работать с объектом
  $smarty как обычно.
 
См. также: register_function(), unregister_function().
Example 16.1. Функция-плагин с выводом
<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     function.eightball.php
 * Type:     function
 * Name:     eightball
 * Purpose:  outputs a random magic answer
 * -------------------------------------------------------------
 */
function smarty_function_eightball($params, &$smarty)
{
    $answers = array('Да',
                     'Нет',
                     'Никоим образом',
                     'Перспектива так себе...',
                     'Спросите позже',
                     'Все может быть');
    $result = array_rand($answers);
    return $answers[$result];
}
?>
   
 
которая может быть использована в шаблоне следующим образом:
Вопрос: Мы когда-нибудь найдем время для отпуска?
Ответ: {eightball}.
  
Example 16.2. Функция-плагин без вывода
<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     function.assign.php
 * Type:     function
 * Name:     assign
 * Purpose:  assign a value to a template variable
 * -------------------------------------------------------------
 */
function smarty_function_assign($params, &$smarty)
{
    extract($params);
    if (empty($var)) {
        $smarty->trigger_error("assign: missing 'var' parameter");
        return;
    }
    if (!in_array('value', array_keys($params))) {
        $smarty->trigger_error("assign: missing 'value' parameter");
        return;
    }
    $smarty->assign($var, $value);
}
?>