$compile_id Persistant compile identifier. As an alternative to passing the same compile_id to each and every function call, you can set this compile_id and it will be used implicitly thereafter. With a compile_id you can work around the limitation that you cannot use the same $compile_dir for different $template_dirs. If you set a distinct compile_id for each template_dir then smarty can tell the compiled templates apart by their compile_id. If you have for example a prefilter that localizes your templates (that is: translates language dependend parts) at compile time, then you should use the current language as $compile_id and you will get a set of compiled templates for each language you use. Another example would be to use the same compile directory across multiple domains / multiple virtual hosts. $compile_id compile_id = $_SERVER['SERVER_NAME']; $smarty->compile_dir = 'path/to/shared_compile_dir'; ?> ]]>