說明 Smarty 如何透過 {config_load} 從外部設定檔(.conf/.ini)載入變數,支援區段機制依環境切換設定,並在模板中以 {#var#} 語法輸出。適合將資料庫連線參數、網站基本資訊等不常變動的設定外部化。
[Database]
host = "localhost"
username = "root"
password = "123456"
db_name = "myapp"
[Cache]
driver = "redis"
host = "127.0.0.1"
port = 6379
key = "value",每行一組,無需分號結尾。[SectionName] 定義區段,同一鍵名可在不同區段有不同值。{* temp.tpl *}
{* 載入預設區段(無區段名稱的鍵) *}
{config_load file="db.conf"}
<html>
<h2>從設定檔載入變數</h2>
<p>Host: {#host#}</p>
<p>User: {#username#}</p>
</html>
{* 載入 Database 區段 *}
{config_load file="db.conf" section="Database"}
{#host#} {#username#} {#password#} {#db_name#}
{* 載入 Cache 區段 *}
{config_load file="db.conf" section="Cache"}
{#driver#} {#host#} {#port#}
$smarty->config_dir 統一管理。<?php
require_once("./libs/Smarty.class.php");
$smarty = new Smarty();
$smarty->config_dir = __DIR__ . "/configs"; // 設定設定檔目錄
$smarty->display("temp.tpl");
?>
<?php
// 在 PHP 端預載入,所有模板自動可用
$smarty->config_load("db.conf", "Database");
$smarty->display("temp.tpl");
?>
| 來源 | 模板語法 | 範例 |
|---|---|---|
| PHP assign | {$var} | {$title} |
| 設定檔 | {#var#} | {#site_name#} |
section="production" / section="development"善用 {config_load} 將設定外部化,提升專案可維護性與部署彈性。