Smarty 图标

你可以根据商标声明使用 Smarty 标志。

Smarty Template Engine Smarty Template Engine

若需了解赞助、广告、新闻或其他查询,请通过以下方式与我们联系:

正在使用 Smarty 的网站

广告

名称

registerPlugin() — 动态注册插件

说明

void registerPlugin(string 类型,
                    string 名称,
                    mixed 回调,
                    bool 可缓存,
                    mixed cache_attrs);

此方法注册在你的脚本中定义的功能或方法作为插件。它使用以下参数

  • 类型定义插件类型。有效值包括“函数”、“块”、“编译器”和“修饰符”。

  • 名称定义插件名称。

  • 回调定义 PHP 回调。此回调可以是以下内容

    • 包含函数名称的字符串

    • 形式为 array($object, $method) 的数组,其中 $object是对对象的引用,而 $method是包含方法名称的字符串。

    • 形式为 array($class, $method) 的数组,其中 $class是类名,而 $method是类的某个方法。

  • 可缓存cache_attrs在大多数情况下都可以忽略。请参阅控制插件输出的可缓存性来了解如何正确使用它们。

示例 14.39 注册函数插件

<?php
$smarty->registerPlugin("function","date_now", "print_current_date");

function print_current_date($params, $smarty)
{
  if(empty($params["format"])) {
    $format = "%b %e, %Y";
  } else {
    $format = $params["format"];
  }
  return strftime($format,time());
}
?>

   

在模板中

{date_now}

{* or to format differently *}
{date_now format="%Y/%m/%d"}


示例 14.40 注册块函数插件

<?php
// function declaration
function do_translation ($params, $content, $smarty, &$repeat, $template)
{
  if (isset($content)) {
    $lang = $params["lang"];
    // do some translation with $content
    return $translation;
  }
}

// register with smarty
$smarty->registerPlugin("block","translate", "do_translation");
?>

   

其中模板是

{translate lang="br"}Hello, world!{/translate}

   

示例 14.41 注册修饰符插件

<?php

// let's map PHP's stripslashes function to a Smarty modifier.
$smarty->registerPlugin("modifier","ss", "stripslashes");

?>

在模板中,使用 ss 删除反斜杠。

<?php
{$var|ss}
?>


另请参见 unregisterPlugin()插件函数插件 block 函数插件编译器函数以及创建插件修改器部分。