Skip to content

\$compile_id {/programmers/api-variables/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 文件路径