鍍金池/ 教程/ PHP/ Smarty insert
Smarty安裝
Smarty insert
Smarty 建立緩存
Smarty調(diào)試控制臺
Smarty if,elseif,else
Smarty include_php
Smarty多個緩存
Smarty方法
Smarty section,sectionelse
Smarty注釋代碼
Smarty屬性
Smarty緩沖處理函數(shù)
Smarty變量調(diào)節(jié)器
Smarty函數(shù)
Smarty組合修改器
Smarty雙引號里值的嵌入
Smarty預過濾器
Smarty foreach,foreachelse
Smarty include
Smarty Caching緩存
Smarty變量
Smarty assign用法
Smarty控制插件輸出緩沖
Smarty從配置文件讀取的變量
Smarty對象
Smarty literal
Smarty緩存集合
Smarty教程
Smarty display方法
Smarty自定義函數(shù)
Smarty配置文件
Smarty擴展設置
Smarty數(shù)學運算
Smarty輸出濾鏡
Smarty fetch方法

Smarty insert

insert

 

Attribute Name Type Required Default 描述
name string Yes n/a The name of the insert function (insert_name)
assign string No n/a The name of the template variable the output will be assigned to
script string No n/a The name of the php script that is included before the insert function is called
[var ...] [var type] No n/a variable to pass to insert function

屬性 類型 是否必須 缺省值 描述
name string Yes n/a 插入函數(shù)的名稱
assign string No n/a 該屬性指定一個變量保存待插入函數(shù)輸出
script string No n/a

插入函數(shù)前需要先包含的php腳本名稱

[var ...] [var type] No n/a 傳遞給待插入函數(shù)的本地參數(shù)

 

Insert 函數(shù)類似欲 inluce 函數(shù),不同之處是 insert 所包含的內(nèi)容不會被緩存,每次調(diào)用該模板都會重新執(zhí)行該函數(shù).

 

例如你在頁面上端使用一個帶有廣告條位置的模板,廣告條可以包含任何HTML、圖象、FLASH等混合信息. 因此這里不能使用一個靜態(tài)的鏈接,同時我們也不希望該廣告條被緩存. 這就需要在 insert 函數(shù)指定:#banner_location_id# 和 #site_id# 值(從配置文件中取),同時需要一個函數(shù)取廣告條的內(nèi)容信息.


例 7-10. insert 函數(shù)演示

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

 

在此例中,我們使用了 getBanner 作為 name 屬性,同時傳遞了 #banner_location_id# 和 #site_id# 兩個參數(shù). 接下來 Smarty 在你的 php 程序中搜索名為 insert_getBanner() 的函數(shù),#banner_location_id# 和 #site_id# 的值被組合成一個數(shù)組作為函數(shù)的第一個參數(shù)傳遞給該函數(shù). 為了避免函數(shù)命名混亂,所有的 insert 函數(shù)都必須以 insert_ 開頭. 你的 insert_getBanner() 函數(shù)根據(jù)傳遞的參數(shù)執(zhí)行并返回執(zhí)行的結果. 這些結果就顯示在模板中調(diào)用該函數(shù)的位置. 在此例中 Smarty 調(diào)用該函數(shù)類似insert_getBanner(array("lid"=>"12345","sid"=>67890"));并將返回的結果顯示在調(diào)用的位置.

如果設置了 assign 屬性,該屬性對應的變量名用于保存待包含函數(shù)的輸出,這樣待包含函數(shù)的輸出就不會直接顯示了.注意:賦給模板變量的輸出信息在緩存的時候同樣無效.

如果指定了 script 屬性,在調(diào)用函數(shù)并執(zhí)行前將先包含(只包含一次)script指定的 php 腳本. 這是為了防止被調(diào)用的函數(shù)不存在,先調(diào)用包含該函數(shù)的 php 腳本將避免該情況.

Smart 對象作為函數(shù)的第二個參數(shù)被傳遞,在待包含函數(shù)中可以通過 $this 訪問并修改 smarty 對象信息.

技術要點: 使模板的一部分不被緩存. 如果打開了緩存, insert 函數(shù)卻不會被緩存,每次調(diào)用頁面它們都會被動態(tài)加載,即使是在緩存頁面中. 該特性可以廣泛應用于廣告條、投票、實時天氣預報、搜索結果、反饋信息等區(qū)域.



上一篇:Smarty教程下一篇:Smarty變量