Smarty:include函數(shù)

2018-10-14 11:55 更新

{include}

{include}用于載入其他模板到當(dāng)前模板中。 在包含模板中可用的變量,載入后在當(dāng)前模板仍然可用。

  • {include}必須設(shè)置file 屬性,設(shè)置載入的文件資源路徑。

  • 設(shè)置了可選的assign屬性,將{include}模板的內(nèi)容賦值到變量,而并非輸出。 與{assign}操作相似。

  • 包含模板時(shí),可以像使用屬性一樣設(shè)置傳遞的變量。 這樣傳遞的變量,作用范圍僅限于包含的模板內(nèi)。 屬性傳遞的變量將覆蓋原包含模板的同名變量。

  • 你可以在當(dāng)前模板內(nèi)使用包含模板的全部變量。 但是如果包含模板內(nèi)有修改或者新建變量,那么這些變量只有包含模板的作用范圍,而不可以是當(dāng)前{include}模板中使用。 這種默認(rèn)的設(shè)置,可以通過(guò)在包含模板時(shí)設(shè)置{include}的作用范圍屬性,或者 在修改或新增變量時(shí)通過(guò){assign}的作用范圍屬性來(lái)設(shè)定。 后者在需要包含模板返回值時(shí)比較有用。

  • 當(dāng)文件不在$template_dir目錄中時(shí), 使用資源的語(yǔ)法來(lái){include}包含文件。

Attributes:

參數(shù)名稱類型必選參數(shù)默認(rèn)值說(shuō)明
filestringYesn/a包含載入的文件名
assignstringNon/a將包含的文件內(nèi)容賦值給變量
cache_lifetimeintegerNon/a單獨(dú)開(kāi)啟被包含模板的緩存時(shí)間
compile_idstring/integerNon/a單獨(dú)設(shè)置被包含模板的編譯ID
cache_idstring/integerNon/a單獨(dú)設(shè)置被包含模板的緩存ID
scopestringNon/a定義被包含模板的賦值變量作用范圍: 'parent','root' 或 'global'
[var ...][var type]Non/a傳遞到包含模板的變量

可選標(biāo)記:

名稱說(shuō)明
nocache關(guān)閉包含模板的緩存
caching打開(kāi)包含模板的緩存
inline設(shè)置成true時(shí),在編譯時(shí)把包含模板的內(nèi)容也合并到當(dāng)前模板的編譯文件中。

Example 7.46. 簡(jiǎn)單 {include} 例子

<html>
<head>
  <title>{$title}</title>
</head>
<body>
{include file='page_header.tpl'}

{* body of template goes here, the $tpl_name variable
   is replaced with a value eg 'contact.tpl'
*}
{include file="$tpl_name.tpl"}

{* using shortform file attribute *}
{include 'page_footer.tpl'}
</body>
</html>

Example 7.47. {include} 傳遞變量

{include 'links.tpl' title='Newest links' links=$link_array}
{* body of template goes here *}
{include 'footer.tpl' foo='bar'}

包含了下面的 links.tpl 模板

<div id="box">
<h3>{$title}{/h3>
<ul>
{foreach from=$links item=l}
.. do stuff  ...
</foreach}
</ul>
</div>

Example 7.48. {include} 作用范圍示例

在包含的模板內(nèi)賦值的變量,在包含模板內(nèi)可見(jiàn)。

{include 'sub_template.tpl' scope=parent}
...
{* display variables assigned in sub_template *}
{$foo}<br>
{$bar}<br>
...

包含了下面的 sub_template.tpl 模板

...
{assign var=foo value='something'}
{assign var=bar value='value'}
...

Example 7.49. {include} 關(guān)閉緩存

包含模板將不被緩存

{include 'sub_template.tpl' nocache}
...

Example 7.50. {include} 單獨(dú)的緩存時(shí)間

下面例子包含模板將單獨(dú)設(shè)置緩存時(shí)間500秒。

{include 'sub_template.tpl' cache_lifetime=500}
...

Example 7.51. {include}開(kāi)啟緩存

下面的例子包含模板的緩存將獨(dú)立于全局模板緩存設(shè)置之外。

{include 'sub_template.tpl' caching}
...

Example 7.52. {include} 和賦值變量

下面的例子將nav.tpl的內(nèi)容賦值給了$navbar 變量, 該變量將頁(yè)面的頭部和底部顯示。

 
<body>
  {include 'nav.tpl' assign=navbar}
  {include 'header.tpl' title='Smarty is cool'}
    {$navbar}
    {* body of template goes here *}
    {$navbar}
  {include 'footer.tpl'}
</body>

Example 7.53. {include} 相對(duì)路徑

下面的例子包含的模板文件都是相對(duì)當(dāng)前模板的目錄。

   {include 'template-in-a-template_dir-directory.tpl'}
   {include './template-in-same-directory.tpl'}
   {include '../template-in-parent-directory.tpl'}

Example 7.54. 各種 {include} 資源例子

{* absolute filepath *}
{include file='/usr/local/include/templates/header.tpl'}

{* absolute filepath (same thing) *}
{include file='file:/usr/local/include/templates/header.tpl'}

{* windows absolute filepath (MUST use "file:" prefix) *}
{include file='file:C:/www/pub/templates/header.tpl'}

{* include from template resource named "db" *}
{include file='db:header.tpl'}

{* include a $variable template - eg $module = 'contacts' *}
{include file="$module.tpl"}

{* wont work as its single quotes ie no variable substitution *}
{include file='$module.tpl'}

{* include a multi $variable template - eg amber/links.view.tpl *}
{include file="$style_dir/$module.$view.tpl"}

參見(jiàn) {include_php}{insert}{php}, 模板資源 和 模板組件化.

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)