Smarty Template Engine 31. díl – Konfigurační soubory II.
V tomto díle si ukážeme především praktické využití konfiguračních souborů, které můžeme chápat jako superglobální proměnné. Jejich přímé použítí v šablonách samotným kodérem se nastavuje pomocí funkce {config_load}.
Funkce {config_load}
K samotnému načtení konfiguračního souboru tedy slouží funkce {config_load}. Její parametry si uvedeme níže. Co je však důležité zdůraznit je, kam konfigurační soubor můžeme nahrát a jak případně změnit jeho umístění.Direktiva config_dir
Pokud jste v našem seriálu o Smarty Template Engine postupovali od samého začátku, v kořenovém adresáři Vašeho testovacího webu byste měli mít uložený soubor hlavicka.php. Ten by pak měl obsahovat hned několik direktiv, nastavujících výchozí adresáře, používané Smarty. Mezi jinými jsme si pak nastavili i umístění konfiguračních souborů. A jako cílovou složku pak konkrétně adresář „config“.
Jeden z řádku by měl tedy vypadat takto:
hlavicka.php
$smarty->config_dir = './smarty/config';
defaultně pak:
hlavicka.php
$smarty->config_dir = './smarty/configs';
Direktivu vyplňovat samozřejmě nemusíte! Jako defaultní hodnota je zvoleno umístění do složky: „configs“.
V příkladu pak jde o volání funkce „config_dir“, třídy smarty, jejímž jediným parametrem je umístění vycházející z aktuální pozice .php skriptu, jež funkci volá!!
V rámci Vašeho serveru se z důvodu možného zneužití nedoporučuje ukládát soubor do složky, s oprávněním root.
{config_load}
Dostáváme se tedy k samotné funkci. Funkce je potřebna k nahrání konkrétního konfiguračního souboru ze složky s konfiguračními soubory
- file – název konfiguračního souboru, jež si přejem použit, defaultně: ´´ (povinný)
- section – použijeme v případě, že si přejeme použít i tzv. Sekci, uzavřenou v konfiguračním souboru do hranatých závorek. Defaultně se pak tedy použijí hodnoty nastavené z této části. defaultně: ´´ (nepovinný)
- scope – jak má být capture zpřístupněna. Defaultní je hodnota „local“. Dále můžeme vyplnit – parent/global. Local umožňuje načtení pouze v lokální šabloně. Parent i v šablonách includovaných. Global pak ve všech, defaultně: 'local' (nepovinný)
- global – nastavujeme, zda bude proměnná viditelná i pro rodiče, tedy podobně jako nastavení parametru scope == parent. V případě, že, je scope nastaveno na globální, je toto nastavení ignorováno, defaultně: 'false' (nepovinný)
do složky ./smarty/config/
config.php
# zakladni informace o strance patri do hlavicky
pageTitle = "Smarty Template Engine"
textJenTak = “TextJenTak“
#barva pozadi, barva pisma
[Colours]
pageTitle = 'Smarty Template Engine - Barvy'
bgc = #dedede
fc = #f90
index.tpl
{config_load file='muj_config.conf' section='Colours'}
{config_load file='muj_config.conf'}
{include file='./hlavicka.tpl' hlavicka=#pageTitle#}
<p style="color:{#fc#};background-color:{#bgc#};">
{#textJenTak#}
</p>
{include file='./paticka.tpl'}
Povšimněte si několika základních postupů, při použití konfiguračních souborů!!
Pokud chceme použít i proměnné mimo „globální“ konfigurační proměnné, musíme určit sekci, odkud se mají takové informace čerpat.
Poněvadž jsme jako první načetli sekci Colours a až jako druhou tu „globální“, title stránky se bude řídit poslední načtenou, tedy tou globální. Samotné použití v šabloně je pak už více méně jasné.
Toto rozestavení vychází z předpokladu, že používáme rozestavění webu z dřívějších dílů. Defaultně by ten samý příklad vypadal takto:
index.tpl
{config_load file='muj_config.conf'}
{config_load file='muj_config.conf' section='Colours'}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
{#pageTitle#}
</title>
{popup_init src='javascripts/overlib/overlib.js'}
</head>
<body>
<div>
<p style="color:{#fc#};background-color:{#bgc#};">
{#textJenTak#}
</p>
</div>
</body>
</html>
Pouze jsme prohodili pořadí načítání konfiguračních souborů, teď se tedy použije proměnná „pageTitle“ ze sekce „Colours“