Smarty:insert函數(shù)

2018-10-14 11:59 更新

{insert}

重要提示

{insert}是廢棄的函數(shù),不應(yīng)該再使用。將你的PHP邏輯放到PHP腳本中或者通過插件來代替。

溫馨提示:

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

{insert}的工作方式和{include}函數(shù)很像, 除了當(dāng)模板開啟了caching時,{insert}函數(shù)是不會被緩存, 它會在每次模板調(diào)用的時候都執(zhí)行。

參數(shù)名稱類型必選參數(shù)默認(rèn)值說明
namestringYesn/ainsert函數(shù)的名稱(insert_name) 或 insert 插件
assignstringNon/a將輸出的內(nèi)容賦值給變量
scriptstringNon/a在insert函數(shù)調(diào)用前,載入的PHP文件名。
[var ...][var type]Non/a傳遞到insert函數(shù)的變量

我們假設(shè)你有一個包含了橫幅廣告的模板,廣告將顯示在頁面的頂部。 橫幅廣告將包括HTML、圖片、FLASH等。 所以我們不能在橫幅內(nèi)使用靜態(tài)鏈接,也不能對其進(jìn)行緩存。 我們用{insert}:模板可以從配置文件中獲取到 #banner_location_id# 和 #site_id# 值, 并且調(diào)用一個函數(shù)來顯示橫幅廣告的內(nèi)容。

Example 7.56.  {insert} 函數(shù)

{* 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函數(shù),并且傳遞了 #banner_location_id# 和 #site_id#參數(shù)。 Smarty將查詢PHP程序,找到insert_getBanner()函數(shù),用數(shù)組將#banner_location_id# 和 #site_id#作為該函數(shù)的第一個參數(shù)來傳遞。 程序中全部的{insert}對應(yīng)的函數(shù)都應(yīng)該以"insert_"開頭,以避免命名沖突。 你的insert_getBanner()函數(shù)應(yīng)該用傳進(jìn)去的參數(shù)做一些處理,并且返回結(jié)果。 這些結(jié)果將顯示在模板的{insert}標(biāo)簽的位置。 在這個例子中,Smarty將調(diào)用函數(shù)insert_getBanner(array("lid" => "12345","sid" => "67890")); 然后將返回的結(jié)果顯示在{insert}的位置。

  • 如果設(shè)置了assign 屬性,那么{insert}輸出的內(nèi)容將被賦值到 模板變量中,而不是進(jìn)行顯示。

    溫馨提示:

    當(dāng)caching開啟時,將輸出賦值到模板變量并非很有用。

  • 如果設(shè)置了script屬性, 在{insert}函數(shù)執(zhí)行之前,該路徑的PHP文件將被載入(僅一次)。 當(dāng)該insert函數(shù)并不存在是,使用這個方法可以在該PHP文件中載入此函數(shù)。

    載入的PHP文件路徑可以是絕對路徑,或是相對于 $trusted_dir的路徑。 如果安全機制開啟,那么只有在$trusted_dir目錄中的文件才可以被載入。 參見安全機制。

傳遞的第二個參數(shù)是Smarty對象。 這樣你可以在 {insert} 函數(shù)內(nèi)引用和修改Smarty對象的信息。

如果該PHP文件無法找到,Smarty將尋找是否有相應(yīng)名稱的insert插件。

技術(shù)說明

這是一個使頁面部分區(qū)域不進(jìn)行緩存的方法。 即使你開啟了緩存,{insert}函數(shù)也不會別緩存。 它會在每次頁面創(chuàng)建時都動態(tài)執(zhí)行,即使是緩存頁面。 在這一些場合,如橫幅廣告、投票調(diào)查、即時天氣,搜索結(jié)果、用戶反饋區(qū)域等比較有用。

參見 {include}

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號