codecamp

Smarty:insert函数

{insert}

重要提示

{insert}是废弃的函数,不应该再使用。将你的PHP逻辑放到PHP脚本中或者通过插件来代替。

温馨提示:

在Smarty 3.1,{insert}仅在SmartyBC中可用.

{insert}的工作方式和{include}函数很像, 除了当模板开启了caching时,{insert}函数是不会被缓存, 它会在每次模板调用的时候都执行。

参数名称类型必选参数默认值说明
namestringYesn/ainsert函数的名称(insert_name) 或 insert 插件
assignstringNon/a将输出的内容赋值给变量
scriptstringNon/a在insert函数调用前,载入的PHP文件名。
[var ...][var type]Non/a传递到insert函数的变量

我们假设你有一个包含了横幅广告的模板,广告将显示在页面的顶部。 横幅广告将包括HTML、图片、FLASH等。 所以我们不能在横幅内使用静态链接,也不能对其进行缓存。 我们用{insert}:模板可以从配置文件中获取到 #banner_location_id# 和 #site_id# 值, 并且调用一个函数来显示横幅广告的内容。

Example 7.56.  {insert} 函数

{* example of fetching a banner *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
{insert "getBanner" lid=#banner_location_id# sid=#site_id#} {* short-hand *}

在这个例子中,我们使用了名为getBanner的insert函数,并且传递了 #banner_location_id# 和 #site_id#参数。 Smarty将查询PHP程序,找到insert_getBanner()函数,用数组将#banner_location_id# 和 #site_id#作为该函数的第一个参数来传递。 程序中全部的{insert}对应的函数都应该以"insert_"开头,以避免命名冲突。 你的insert_getBanner()函数应该用传进去的参数做一些处理,并且返回结果。 这些结果将显示在模板的{insert}标签的位置。 在这个例子中,Smarty将调用函数insert_getBanner(array("lid" => "12345","sid" => "67890")); 然后将返回的结果显示在{insert}的位置。

  • 如果设置了assign 属性,那么{insert}输出的内容将被赋值到 模板变量中,而不是进行显示。

    温馨提示:

    当caching开启时,将输出赋值到模板变量并非很有用。

  • 如果设置了script属性, 在{insert}函数执行之前,该路径的PHP文件将被载入(仅一次)。 当该insert函数并不存在是,使用这个方法可以在该PHP文件中载入此函数。

    载入的PHP文件路径可以是绝对路径,或是相对于 $trusted_dir的路径。 如果安全机制开启,那么只有在$trusted_dir目录中的文件才可以被载入。 参见安全机制。

传递的第二个参数是Smarty对象。 这样你可以在 {insert} 函数内引用和修改Smarty对象的信息。

如果该PHP文件无法找到,Smarty将寻找是否有相应名称的insert插件。

技术说明

这是一个使页面部分区域不进行缓存的方法。 即使你开启了缓存,{insert}函数也不会别缓存。 它会在每次页面创建时都动态执行,即使是缓存页面。 在这一些场合,如横幅广告、投票调查、即时天气,搜索结果、用户反馈区域等比较有用。

参见 {include}

Smarty:include_php函数
Smarty:ldelim和rdelim函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

I.Smarty基础

1.Smart是什么?

II.Smarty模板设计师篇

6.Smarty复合修饰器

9.Smarty配置文件

10.Smarty调试控制台

III. 程序开发者篇

11. Smarty字符集编码

12.Smarty常量

13.Smarty成员变量

14.Smarty成员方法

17.Smarty高级特性

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }