在当前模版文件中包含其他的模版文件使用include标签,标签用法:  ~~~ {include file='模版文件1,模版文件2,...' /} ~~~  >[danger] 包含的模板文件中不能再使用模板布局或者模板继承。  ## 使用模版表达式  模版表达式的定义规则为:**模块@控制器/操作**  例如:  ~~~ {include file="public/header" /} // 包含头部模版header {include file="public/menu" /} // 包含菜单模版menu {include file="blue/public/menu" /} // 包含blue主题下面的menu模版 ~~~  可以一次包含多个模版,例如:  ~~~ {include file="public/header,public/menu" /} ~~~ > 注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。  ## 使用模版文件  可以直接包含一个模版文件名(包含完整路径),例如:  ~~~ {include file="../application/view/default/public/header.html" /} ~~~ > 路径以 项目目录/public/ 路径下为起点   ## 传入参数  无论你使用什么方式包含外部模板,Include标签支持在包含文件的同时传入参数,例如,下面的例子我们在包含header模板的时候传入了`title`和`keywords`参数:  ~~~ {include file="Public/header" title="$title" keywords="开源WEB开发框架" /} ~~~ 就可以在包含的header.html文件里面使用title和keywords变量,如下:  ~~~html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>[title]</title> <meta name="keywords" content="[keywords]" /> </head> ~~~ 上面title参数传入的是个变量`$title`,模板内的`[title]`最终会替换成`$title`的值,当然`$title`这个变量必须要存在。  >[info] 包含文件中可以再使用include标签包含别的文件,但注意不要形成A包含A,或者A包含B而B又包含A这样的死循环。  >[danger] 由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。