shop-old/libs/smarty/docs/programmers/api-variables/variable-compile-id.md
Thomas Bartelt 0a669704ea Dev-Umgebung: Kompatibilität für PHP 8.3 + Smarty 4.5.6
- Smarty 4.1.1 → 4.5.6 (behebt dynamic property deprecations)
- Core-Klassen: #[\AllowDynamicProperties] für Admin_role, base, Config,
  Customer, Customer_group, CustomerGroups, Item, Structure, website
- website.class.php: counts[parent_id] initialisieren vor ++ (PHP 8.1)
- layout.class.php: HTTP_ACCEPT_LANGUAGE mit isset-Guard
- website_init.php: session_status()-Check vor session_start
- .htaccess: HTTPS-Redirect via X-Forwarded-Proto (statt SERVER_PORT)
- themes/easyshop_advanced/media/: Parent-Theme-Assets nachgezogen
- .gitignore: smarty.4.1.1.bak ausschließen
2026-04-20 01:19:01 +02:00

1.3 KiB

$compile_id

Persistent 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.

If you use the same template with different pre- and/or post-filters you must use a unique $compile_id to keep the compiled template files separated.

For example a prefilter that localizes your templates (that is: translates language dependent parts) at compile time, then you could use the current language as $compile_id and you will get a set of compiled templates for each language you use.

<?php
$smarty->compile_id = 'en';
?>

Another application would be to use the same compile directory across multiple domains / multiple virtual hosts.

<?php

$smarty->compile_id = $_SERVER['SERVER_NAME'];
$smarty->compile_dir = '/path/to/shared_compile_dir';

?>

Note

In Smarty 3 a $compile_id is no longer required to keep templates with same name in different $template_dir folders separated. The $template_dir file path is encoded in the file name of compiled and cached template files.