• {include}必须设置file 属性,设置载入的文件资源路径。

    • 设置了可选的assign属性,将{include}模板的内容赋值到变量,而并非输出。 与 操作相似。

    • 包含模板时,可以像使用属性一样设置传递的变量。 这样传递的变量,作用范围仅限于包含的模板内。 属性传递的变量将覆盖原包含模板的同名变量。

    • 你可以在当前模板内使用包含模板的全部变量。 但是如果包含模板内有修改或者新建变量,那么这些变量只有包含模板的作用范围,而不可以是当前模板中使用。 这种默认的设置,可以通过在包含模板时设置{include}的作用范围属性,或者 在修改或新增变量时通过的作用范围属性来设定。 后者在需要包含模板返回值时比较有用。

    • 当文件不在$template_dir目录中时, 使用的语法来{include}包含文件。

    Attributes:

    可选标记:

    名称 说明
    nocache 关闭包含模板的缓存
    caching 打开包含模板的缓存
    inline 设置成true时,在编译时把包含模板的内容也合并到当前模板的编译文件中。


    Example 7.46. 简单 {include} 例子

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

    包含了下面的 links.tpl 模板

    1. <div id="box">
    2. <h3>{$title}{/h3>
    3. <ul>
    4. {foreach from=$links item=l}
    5. .. do stuff ...
    6. </foreach}
    7. </ul>
    8. </div>
    9.  


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

    在包含的模板内赋值的变量,在包含模板内可见。

    包含了下面的 模板

    1. ...
    2. {assign var=foo value='something'}
    3. ...
    4.  


    Example 7.49. {include} 关闭缓存

    包含模板将不被缓存

    1. {include 'sub_template.tpl' nocache}
    2. ...
    3.  


    Example 7.50. {include} 单独的缓存时间

    下面例子包含模板将单独设置缓存时间500秒。

    下面的例子包含模板的缓存将独立于全局模板缓存设置之外。

    1. {include 'sub_template.tpl' caching}
    2. ...
    3.  


    Example 7.52. {include} 和赋值变量

    下面的例子将nav.tpl的内容赋值给了$navbar 变量, 该变量将页面的头部和底部显示。

    1. <body>
    2. {include 'nav.tpl' assign=navbar}
    3. {include 'header.tpl' title='Smarty is cool'}
    4. {$navbar}
    5. {* body of template goes here *}
    6. {$navbar}
    7. {include 'footer.tpl'}
    8. </body>
    9.  


    Example 7.53. {include} 相对路径

    下面的例子包含的模板文件都是相对当前模板的目录。


    Example 7.54. 各种 {include} 资源例子

    1. {include file='/usr/local/include/templates/header.tpl'}
    2.  
    3. {* absolute filepath (same thing) *}
    4. {include file='file:/usr/local/include/templates/header.tpl'}
    5.  
    6. {* windows absolute filepath (MUST use "file:" prefix) *}
    7. {include file='file:C:/www/pub/templates/header.tpl'}
    8.  
    9. {* include from template resource named "db" *}
    10. {include file='db:header.tpl'}
    11.  
    12. {* include a $variable template - eg $module = 'contacts' *}
    13. {include file="$module.tpl"}
    14.  
    15. {* wont work as its single quotes ie no variable substitution *}
    16. {include file='$module.tpl'}
    17.  
    18. {* include a multi $variable template - eg amber/links.view.tpl *}
    19. {include file="$style_dir/$module.$view.tpl"}
    20.  

    参见 , {insert}, , 模板资源 和 .