\$compile_id {#variable.compile.id}
持久编译标识符。除了向每个函数调用传递相同的 $compile_id
之外,您还可以设置此 $compile_id
,之后将隐式使用该标识符。
如果您在不同的预过滤器和/或后过滤器中使用相同的模板,则必须使用唯一的 $compile_id
以保持编译后的模板文件分离。
例如,预过滤器在编译时会对您的模板进行本地化(即:翻译与语言相关的部分),那么您可以将当前语言用作 $compile_id
,并且将获得您使用的每种语言的编译后模板集。
<?php
$smarty->compile_id = 'en';
?>
另一个用途是在多个域/多个虚拟主机中使用相同的编译目录。
<?php
$smarty->compile_id = $_SERVER['SERVER_NAME'];
$smarty->compile_dir = '/path/to/shared_compile_dir';
?>
注意
在 Smarty 3 中,不再需要
$compile_id
来将具有相同名称的模板保存在不同的$template_dir
文件夹中。编译后的模板文件和缓存的模板文件的名称中都编码了$template_dir
文件路径。